娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月19日(星期三)

正在發(fā)生

2018年02月19日 | 基于ARM的嵌入式USB圖像采集與顯示方案

發(fā)布者:jiaohe1 來源: eefocus關鍵字:ARM  USB  圖像采集  顯示 手機看文章 掃描二維碼
隨時隨地手機看文章

  引言

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

 

  1 系統(tǒng)架構

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

 

  

 

  2 視頻圖像采集

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

  2.1 USB 攝像頭驅動

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

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

  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

  Chip support

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

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

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

 

  

 

  (1)打開視頻設備。

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

  int my_v4l_open (char*dev,my_v4l_STruct*vd) 函數(shù)用于打開視頻設備并初始化攝像頭設備,該函數(shù)調用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) 來讀取有關攝像頭的信息。該函數(shù)成功返回后將這些信息從內核空間拷貝到用戶程序空間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ū),并進行內存與緩沖區(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;

  ……}

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

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

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

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

  close(vd- >fd);

 

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

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

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

  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 上的所有繪制任務結束

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

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

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

  4 結論

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


關鍵字:ARM  USB  圖像采集  顯示 引用地址:基于ARM的嵌入式USB圖像采集與顯示方案

上一篇:μC/OS-II操作系統(tǒng)在不同處理器上的應用
下一篇:在ARM11嵌入式系統(tǒng)下實時網(wǎng)絡通信和LCD顯示的實現(xiàn)

推薦閱讀

一、OLED的優(yōu)點 1、厚度可以小于1毫米,僅為LCD屏幕的1/3,并且重量也更輕;2、固態(tài)機構,沒有液體物質,因此抗震性能更好,不怕摔;3、幾乎沒有可視角度的問題,即使在很大的視角下觀看,畫面仍然不失真;4、響應時間是LCD的千分之一,顯示運動畫面絕對不會有拖影的現(xiàn)象;5、低溫特性好,在零下40度時仍能正常顯示,而LCD則無法做到;6、制造工藝簡單,...
在單片機中會遇到識別按鍵的問題,常用的獨立按鍵電路如下圖: 由于機械式觸點開關具有彈性,會發(fā)生抖動,所以要進行消抖。有兩種消抖方式:硬件消抖和軟件消抖。 硬件消抖電路: 軟件消抖常采用延時消抖:按鍵被按下時,當檢測到低電平時,延時一段時間,一般是5到10ms,然后再檢測端口,若還是低電平,則表示檢測到按鍵按下,按鍵彈起時同理可得。獨...
近日,小米米家推出首款旗艦電動剃須刀——米家電動剃須刀 往復五刀頭,這是一款對標國際大牌高端剃須刀的標桿產(chǎn)品。將于2月19日上午10點在小米商城、小米之家開啟眾籌。  其眾籌價僅為429元,正式零售價為499元。相比近似配置的國際品牌產(chǎn)品1000-2000元的價位段,它的定價可謂誠意滿滿,做到了高端產(chǎn)品大眾價格。  五刀頭是全球剃須刀行業(yè)內的極...
據(jù)日經(jīng)新聞報道,日本芯片制造商Kioxia開發(fā)了大約170層的NAND閃存,加入了與美國同行Micron Technology和韓國的SK Hynix的競賽。 據(jù)報道,鎧俠新的NAND存儲器是與美國合作伙伴Western Digital共同開發(fā)的,其寫入數(shù)據(jù)的速度是Kioxia當前最高端產(chǎn)品(112層)的兩倍以上。 Kioxia原名Toshiba Memory,他們計劃在正在進行的國際固態(tài)電路大會(每年一度的全...

史海拾趣

問答坊 | AI 解惑

MSP430系列單片機選購指南

MSP430系列單片機選購指南…

查看全部問答∨

限流保護電路接法

限流保護電路接法…

查看全部問答∨

嵌入式Linux入門筆記

嵌入式Linux入門筆記…

查看全部問答∨

8583是否有內部晶振?如果有還需要加外部石英晶體振蕩否?

8583是否有內部晶振?如果有還需要加外部石英晶體振蕩否?…

查看全部問答∨

一個做技術14年的人生職業(yè)規(guī)劃(轉)

我今年39歲了, 25歲研究生畢業(yè),工作14年,回頭看看,應該說走了不少的彎路,有一些經(jīng)驗和教訓。現(xiàn)在開一個小公司,賺的錢剛夠養(yǎng)家糊口的。看看這些剛畢業(yè)的學生,對前景也很迷茫,想拋磚引玉,談談自己的看法,局限于理工科的學生,我對文科的不 ...…

查看全部問答∨

Checksum失敗!

請問剛生成的NK.bin(基于wince 6.0 bsp)通過DNW下載出現(xiàn)Checksum失敗該怎么解決啊? 板子是mini2440,是不是要換nor flash中的supervivi啊?下載wince5 的nk可以,但下載ce6生成的nk就出現(xiàn)這個錯誤。謝謝!…

查看全部問答∨

關于lkf和庫文件的問題

用stm8 做flash燒寫,在工程設置里,把自動使用的lkf改成stm8s208,之后,在主函數(shù)(用flash例子程序)里,在調用庫函數(shù)就出現(xiàn)錯誤:1 symbol _GPIO_ReadInputData not defined (Debug\\main.o ) 這個怎么回事?解決方法。 另外,flash ram  ...…

查看全部問答∨

wince6.0編譯錯誤 error:c2220

wince6.0編譯報錯:error C2220: warning treated as error - no \'object\' file generated 查看了一下報錯的那行代碼是:         *mem = buf;     *mem_phy = buf_phy; 百度了一下,說是警告級別高 ...…

查看全部問答∨

飛思卡爾zigbee平臺手冊

這是fsl提供的zigbee技術的一個手冊,介紹了freescale提供的幾種zigbee platform的使用方法…

查看全部問答∨

求個,高手指點迷津——STM復位問題

串口發(fā)送字符串;復位后BOOT0啟動就無法發(fā)送了;定時器也不工作了,這問題出在哪?? 其他的可以工作,燈可以閃,中斷也對····· 我是用庫函數(shù)3.5寫的。 [ 本帖最后由 aleanking 于 2012-2-3 23:54 編輯 ]…

查看全部問答∨
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 兴安县| 雷州市| 株洲市| 宕昌县| 永善县| 绥宁县| 张掖市| 漳州市| 西乡县| 靖宇县| 梁山县| 永川市| 安多县| 裕民县| 乌拉特中旗| 琼海市| 莱阳市| 南靖县| 霍州市| 彩票| 时尚| 鹿泉市| 澜沧| 历史| 工布江达县| 民丰县| 子长县| 安化县| 利辛县| 朝阳县| 孟连| 合川市| 永修县| 新巴尔虎右旗| 江都市| 兴和县| 临漳县| 和静县| 黄梅县| 灯塔市| 石河子市|