<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于S3C2410的的圖像采集系統(tǒng)

          基于S3C2410的的圖像采集系統(tǒng)

          作者: 時間:2012-03-09 來源:網(wǎng)絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/149480.htm

          啟動時,首先需要加載各種驅動模塊,然后向注冊了生產(chǎn)廠商號碼(VendorID)和產(chǎn)品號(Pro-ductID)。當USB設備連接到主機上,會檢測它的VendorID和ProductID,如果與驅動模塊的注冊內(nèi)容匹配,則將該驅動程序與設備掛接起來[5]。當插入攝像頭時,系統(tǒng)會調用zc301_probe函數(shù)。參數(shù)dev指定了設備信息,probe函數(shù)驗證所有可選配置的有效性,并調用usbvideo模塊的sbvideo_Regis-terVideodevice()函數(shù)向videodev系統(tǒng)注冊。

          當系統(tǒng)完成驅動注冊后,調用staticintzc301_init(structusb_zc301*zc301)和staticvoidzc301_start(structusb_301*zc301)函數(shù)完成對設備的初始化過程:填寫各個寄存器值、啟動攝像頭。系統(tǒng)運行到這一步,基本完成了對攝像頭驅動加載及設備初始化。接下來需要通過讀取用戶設定的規(guī)格,其中包括:格式、分辨率、顏色深度、對比度和亮度等參數(shù)。這些數(shù)值的讀取都是通過以下函數(shù)實現(xiàn)的:

          在得到這些參數(shù)值后,再調用一套函數(shù),實現(xiàn)參數(shù)的設置。每個參數(shù)設置函數(shù)和之前的參數(shù)取值函數(shù)是一一對應的。具體函數(shù)如下:

          通過調用上面的函數(shù),我們基本得到了所需的參數(shù)值,這樣我們就可以啟動攝像頭了。

          當然我們還需要staticvoidzc301_shutdown(structusb_zc301*zc301)來關閉攝像頭。

          至此,攝像頭驅動的驅動基本完成。通過這些函數(shù)的設置我們可以把具體的硬件電路抽象化為數(shù)據(jù)結構中的參數(shù)值。接下來我們可以通過V4L驅動來調用這些函數(shù),實現(xiàn)對參數(shù)的賦值、打開設備、和關閉設備等一系列的過程。

          重新編譯、運行內(nèi)核時,在串口反饋信息中會顯示USB攝像頭驅動程序成功加載。如圖3所示。

          圖3串口反饋信息3Video4Linux下的圖像編程:

          Video4Linux,簡稱V4L,是Linux中關于視頻設備的內(nèi)核驅動,它為針對視頻設備的應用程序編程提供一系列半標準的接口。V4L利用這個接口,增加一些額外的功能,同時向外提供了一個屬于自己的API。我們可以通過調用V4L的API來實現(xiàn)各種功能。在Linux下,視頻設備的正常使用依賴于對Video4Linux標準的支持。目前的V4L涵蓋了視、音頻流捕捉及處理等內(nèi)容,USB攝像頭也屬于它支持的范疇。

          V4L中定義的主要數(shù)據(jù)結構:

          這些數(shù)據(jù)結構都是由Video4Linux支持的,它們的用途如下:

          (1)video_capability包含攝像頭的基本信息,例如設備名稱、支持的最大最小分辨率、信號源信息等,分別對應著結構體中成員變量name、maxwidth、maxheight、minwidth、minheight、channels(信號源個數(shù))、type等;

          (2)voide_picture包含設備采集圖像的各種屬性,如brightness(亮度)、hue(色調)、contrast(對比度)、whiteness(色度)、depth(深度)等;

          (3)video_mmap用于內(nèi)存映射;

          (4)voido_mbuf利用mmap進行映射的幀信息,實際上是輸入到攝像頭存儲器緩沖中的幀信息,包括size(幀的大?。?、frAMEs(最多支持的幀數(shù))、offsets(每幀相對基址的偏移)。

          系統(tǒng)在采集圖像之前,需要初始化這些數(shù)據(jù)結構中的參數(shù)值,系統(tǒng)才能夠按照要求采集圖像數(shù)據(jù)。

          在USB攝像頭被驅動后,只需要再編寫一個對視頻流采集的應用程序就可以了。根據(jù)嵌入式系統(tǒng)開發(fā)特征,先在宿主機上編寫應用程序,再使用交叉編譯器進行編譯鏈接,生成在目標平臺的可執(zhí)行文件。宿主機與目標板通信采用打印終端的方式進行交叉調試,成功后移植到目標平臺。

          V4L圖像采集編程流程:

          (1)打開視頻設備;

          (2)讀取設備信息;

          (3)更改設備當前設置;

          (4)視頻采集得到圖像信息;



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();