www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]   引言  目前市場上大部分的圖像采集與處理系統(tǒng)是基于DSP芯片的,這種圖像采集與處理系統(tǒng)成本高、功耗高、體積約束等特點并不適用于一些簡單的應用。隨著USB 攝像頭的普及和基于ARM 的嵌入式芯片的

  引言

  目前市場上大部分的圖像采集與處理系統(tǒng)是基于DSP芯片的,這種圖像采集與處理系統(tǒng)成本高、功耗高、體積約束等特點并不適用于一些簡單的應用。隨著USB 攝像頭的普及和基于ARM 的嵌入式芯片的快速發(fā)展,將二者結(jié)合的便攜性越來越受人們歡迎。本文介紹了一種基于三星S3C2440A 芯片的嵌入式USB 攝像頭圖像采集與顯示方案,該方案具有良好的可移植性和擴展性,并且成本、大小和實時處理都能夠滿足市場需求。

  1 系統(tǒng)架構(gòu)

  系統(tǒng)通過當前市場上應用最廣泛的中芯微公司生產(chǎn)的zc301p 芯片的USB 攝像頭進行圖像采集,然后將圖像信息傳送到ARM 芯片中進行處理,最終通過基于Qt/Embedded 編寫的圖形顯示程序在LCD上實時顯示。系統(tǒng)的整體架構(gòu)如圖1 所示。

  

  2 視頻圖像采集

  系統(tǒng)采用中芯微公司生產(chǎn)的zc301p 芯片的USB 攝像頭作為圖像采集設備,并介紹了基于Video4Linux 編程協(xié)議進行視頻圖像采集的一般過程。

  2.1 USB 攝像頭驅(qū)動

  Linux 內(nèi)核能夠很好地支持OHCI(開放式主機控制接口協(xié)議),并且能夠很好地支持包括OV511系列攝像頭在內(nèi)的各種各樣的USB 設備,但是并不包括zc301pUSB 攝像頭。直到后來2.6.27 版本左右的內(nèi)核中才增加了針對zc301 系列芯片的驅(qū)動,統(tǒng)稱為Linux UVC.本文采用的是Linux2.6.32.2 版本內(nèi)核,只需要對內(nèi)核進行簡單的配置,就可以實現(xiàn)功能了。

  在配置菜單選項中,設備驅(qū)動是最重要的配置項。選擇的配置項如下:

  DevICe Drivers - - - >

  Multimedia devices - - - >

  Video For Linux

  Enable Video For Linux API 1(DEPRECAteD)

  Video capture adapters - - - >

  V4L USB devices - - - >

  USB Video Class (UVC)

  UVC input events device support

  GSPCA based webcams - - - >

  ZC3XXX USB CAMEra Driver

  USB ZC0301 [P]Image Processor and Control

  Chipsupport

  現(xiàn)在,內(nèi)核被配置成可以支持Video4Linux 的視頻接口,并且加入了支持zc301pUSB 攝像頭的驅(qū)動程序。

  2.2 基于Video4Linux 的視頻圖像采集程序設計

  Video4Linux(簡稱V4L)為目前市場常見的電視捕獲卡和并口及USB 口的攝像頭提供統(tǒng)一的編程接口。在Linux 內(nèi)核中它為用戶空間提供統(tǒng)一的編程接口,V4L 分為兩層:底層是音頻和視頻設備驅(qū)動程序的內(nèi)核;上層為系統(tǒng)提供一些API 接口信息。視頻圖像采集流程如圖2 所示。

  

 ?。?)打開視頻設備。

  在Linux 中視頻設備是被作為設備文件來執(zhí)行的,本文USB 攝像頭的設備文件名為/dev/video0.

  int my_v4l_open (char*dev,my_v4l_STruct*vd) 函數(shù)用于打開視頻設備并初始化攝像頭設備,該函數(shù)調(diào)用open 函數(shù)可以讀設備文件,成功返回設備描述符,失敗返回- 1.主要程序代碼如下:

  int my_v4l_open(char*dev,my_v4l_struct*vd){

  if((vd- >fd=open(vd- >videodevice,O_RDWR))= =- 1){

  printf(“ERROR opening V4L interface”);

  exit(1);}

  ……}

  (2)讀設備信息。

  int my_v4l_get_capability (my_v4l_struct*) 函數(shù)的功能是讀取設備基本信息, 它利用ioctl(vd_fd,VIDIOCGCAP,&(vd- >capability) 來讀取有關(guān)攝像頭的信息。該函數(shù)成功返回后將這些信息從內(nèi)核空間拷貝到用戶程序空間capability 各成員分量中,使用printf 函數(shù)就可得到各成員分量信息。具體如下:

  int my_v4l_get_capability(my_v4l_struct*){

  if(ioctl(vd- >fd,VIDIOCGPICT,&(vd- >capability))<0){

  printf(“error:v4l_get_capabilityn”);

  exit(1);}

  return 0;}

  (3)視頻圖像采集。

  本文通過mmap 方式來采集視頻圖像信息。為了獲得映射的幀緩沖信息,my_v4l_mmap_init(my_v4l_struct*)函數(shù)需先初始化緩沖區(qū),并進行內(nèi)存與緩沖區(qū)的綁定,其中函數(shù)mmap 用于將文件fd與video_mbuf 綁定實現(xiàn)映射,函數(shù)mmap()返回值是系統(tǒng)實際分配的起始地址。函數(shù)my_v4l_mmap_init()的部分代碼實現(xiàn)如下:

  void my_v4l_mmap_init(my_v4l_struct*vd){

  ……

  ioctl(vd- >fd,VIDIOCGMBUF,&(vd- >mbuf));// 初始化video_mbuf 以得到所映射的buffer的信息

  vd- >pframebuffer= (unsigned char*)mmap (0,

  vd- >videombuf.size,

  PROT_READ|PROT_WRITE,MAP_SHARED,vd- >fd,0);

  /* 把文件fd 與video_mbuf 綁定,實現(xiàn)映射*/

  vd- >mmapsize=vd- >videombuf.size;

  vd- >vmmap.height=vd- >HDRheight;

  vd- >vmmap.width=vd- >hdrwidth;

  vd- >vmmap.format=vd- >formaTIn;

  vd- >vmmap.frame=0;

  ……}

  然后利用驅(qū)動程序的ioctl () 函數(shù)的VIDIOCMCCAPTURE 和VIDIOCSYNC 命令來獲取圖像。其中ioctl (vd- >fd,VIDIOCMCAPTURE,&(vd- >mmap)) 開始一幀圖像的采集,是非阻塞的;ioctl(vd- >fd,VIDIOCSYNC,&frame)用于判斷一幀圖像采集過程結(jié)束與否,frame 是當前采集的幀的序號。

  采集工作結(jié)束后調(diào)用munmap 取消文件fd 與video_mbuf 的綁定。

  munmap(vd- >map,vd- >mbuf.size);

  (4)關(guān)閉設備在視頻采集完成后,必需關(guān)閉視頻設備。

  close(vd- >fd);

  3 基于Qt/Embedded 圖像顯示程序的編寫

  基于嵌入式Linux 常見的GUI 系統(tǒng)有MiniGUI、MicroWindows、OpenGUI和基于Framebuffer[5]的Qt/Embedded[4].Qt 是諾基亞開發(fā)的一個跨平臺的C++ 圖形用戶界面應用程序框架,它提供給應用程序開發(fā)者建立藝術(shù)級的圖形用戶界面所需的功能,并且是完全面向?qū)ο蟮?,很容易擴展,允許真正的組件編程。正是基于以上優(yōu)點,本文采用Qt/Embedded 開發(fā)平臺,并將基于Qt 的圖形界面Qtopia 移入我們的文件系統(tǒng)中。

  為了避免由于圖像數(shù)據(jù)量大而在目標板上顯示閃爍的問題,本文采用雙緩沖技術(shù)實現(xiàn)采集圖像顯示,采用的是QPixmap 對象。QPixmap 是Qt 為圖像處理提供的類,主要用于圖像的繪制。實現(xiàn)雙緩沖時,先把要顯示的內(nèi)容繪制在這個QPixmap pixmap 對象上,然后再用一步操作把pixmap 繪制在屏幕上?;赒t 圖像顯示及輔助框線繪制的部分代碼段如下:

  QPixmap pix (width (),height ());// 定義一個QPixmap 用于在上面繪制圖像及框線

  QPainter p(&pix);// 定義繪制工具

  QPainterQPen pen (yellow,3,DotLine);// 定義一個畫筆的屬性,如顏色、粗細、線條樣式

  p.drawImage (0,0,img);// 把攝像頭采集到的圖像繪制到QPixmap 上

  p.setPen(pen);// 設置畫筆屬性

  p.moveTo(50,330);// 設置畫筆筆尖起始位置

  p.lineTo(150,50);// 開始繪制框線

  p.lineTo(490,50);

  …略

  p.end();// 在QPixmap 上的所有繪制任務結(jié)束

  p.begin(this );// 準備把QPixmap 繪制到屏幕上

  p.drawPixmap (0,0,pix);// 繪制QPixmap 到屏幕操作,圖像顯示到LCD上

  圖像數(shù)據(jù)的連續(xù)采集和顯示是通過定時器實現(xiàn)的,QTimer 類提供了定時器信號和單觸發(fā)定時器。設置定時啟動觸發(fā)周期,每當定時器時間到就觸發(fā)一個定時器事件,在事件中調(diào)用VIDIOCMCAPTURE 函數(shù)完成對圖像的采集,并通過QPixmap 類將圖像顯示到LCD上。至此就可以通過基于Qt 編寫的圖形界面程序,將USB 攝像頭采集的視頻圖像在LCD 上實時顯示。

  4 結(jié)論

  本文基于ARM9 處理器和嵌入式Linux 操作系統(tǒng),詳細介紹了一種USB 攝像頭圖像采集與顯示的通用方法。Linux 代碼完全開源,系統(tǒng)具有良好的移植性,可方便地進行各種擴展,采用Qt 進行人機界面的設計能夠極大地節(jié)省開發(fā)成本和周期。本方案經(jīng)推廣可用于工業(yè)控制、智能交通、小區(qū)監(jiān)控等領域。


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉