<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM的嵌入式USB圖像采集與顯示

基于A(yíng)RM的嵌入式USB圖像采集與顯示

作者: 時(shí)間:2011-11-14 來(lái)源:網(wǎng)絡(luò ) 收藏

 ?。?)讀設備信息。

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

  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;}

 ?。?)視頻。

  本文通過(guò)mmap 方式來(lái)視頻信息。為了獲得映射的幀緩沖信息,my_v4l_mmap_init(my_v4l_struct*)函數需先初始化緩沖區,并進(jìn)行內存與緩沖區的綁定,其中函數mmap 用于將文件fd與video_mbuf 綁定實(shí)現映射,函數mmap()返回值是系統實(shí)際分配的起始地址。函數my_v4l_mmap_init()的部分代碼實(shí)現如下:

  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 綁定,實(shí)現映射*/

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

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

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

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

  vd- >vmmap.frame=0;

  ……}

  然后利用驅動(dòng)程序的ioctl () 函數的VIDIOCMCCAPTURE 和VIDIOCSYNC 命令來(lái)獲取。其中ioctl (vd- >fd,VIDIOCMCAPTURE,(vd- >mmap)) 開(kāi)始一幀圖像的,是非阻塞的;ioctl(vd- >fd,VIDIOCSYNC,frame)用于判斷一幀圖像采集過(guò)程結束與否,frame 是當前采集的幀的序號。

  采集工作結束后調用munmap 取消文件fd 與video_mbuf 的綁定。

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

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

  close(vd- >fd);

  3 Qt/Embedded 圖像程序的編寫(xiě)

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

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

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

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

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

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

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

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

  p.lineTo(150,50);// 開(kāi)始繪制框線(xiàn)

  p.lineTo(490,50);

  …略

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

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

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

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

  4 結論

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

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 采集 顯示 圖像 USB ARM 嵌入式 基于

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>