摘 要:在數(shù)字圖像處理技術的圖像測量系統(tǒng)中,必須解決的問題就是圖像采集,利用VFW技術來實現(xiàn)圖像的實時采集,可以提高視頻捕獲的靈活性,減少了對視頻設備的依賴性,為視頻圖像的處理和分析帶來了非常大的便利。本文利用VFW中的AVICap 窗口類來采集圖像,詳細介紹了視頻圖像采集程序的方法,解決了數(shù)字圖像采集及處理技術在圖像測量中的應用問題。
關鍵詞:VFW AVICap類 圖像采集 圖像測量
中圖分類號:TP274文獻標識碼:A文章編號:1674-098X(2012)3(a)-0037-01
1 引言
隨著自動化和計算機技術的飛速發(fā)展,越來越多的應用程序不僅要求能夠處理已經(jīng)存儲好的圖像,還要求能夠實時的獲取視頻圖像,比如醫(yī)療設備,視頻會議,可視電話等系統(tǒng),同時,用于工業(yè)的檢測產(chǎn)品圖像檢測技術也有了飛速的發(fā)展,如焊縫自動跟蹤、四輪定位系統(tǒng)等。而如何實現(xiàn)視頻捕捉是程序設計的關鍵。視頻圖像的捕獲一般有兩種方法,一種是利用視頻捕獲卡所附帶的SDK開發(fā)工具,這種捕獲方法的實現(xiàn)是與設備有關的,依賴于視頻捕獲卡與攝像頭的類型,不利用靈活應用;另一種捕獲方法就是VFW(Video for Windows)[1],這給視頻捕獲編程帶來了很大的方便,利用利用VFW技術可以提高視頻不獲的靈活性,減少了對視頻設備的依賴性。Visual C+ +所提供VFW軟件包中的AVICap 窗口類提供了一條捷徑,我們能夠方便地將視頻操作功能組合到應用程序中去。
2 基于Visual C+ +編寫視頻圖像采集程序方法
2.1 AVICap窗口類的功能
VFW中 AVICap窗口類是Windows環(huán)境下實現(xiàn)視頻操作的重要工具。利用該類函數(shù)可以方便地實現(xiàn)視音頻操作功能程序的編制。AVICap類的主要功能有如下幾個方面:動態(tài)鏈接和斷開視、音頻捕捉設備;設置視頻捕捉速率;設置視頻格式及來源;指定保存的文件名及路徑;提供Overlay(視頻疊加)和Preview(視頻預覽)兩種顯示模式;實時捕捉和存儲單幀視頻圖像并送入剪貼板,也可捕捉視音頻流并存入AVI影音文件;通過AVICap的回調函數(shù)獲得有關視頻捕捉的狀態(tài)。
2.2 AVICap窗口類的主要函數(shù)
AVIcap窗口類為開發(fā)人員提供了一整套視頻操作函數(shù),包括一些回調函數(shù)、宏及一些普通函數(shù),利用這些函數(shù)可以實現(xiàn)視頻捕捉及預覽程序所需的窗口管理[4]。在Windows系統(tǒng)中,回調函數(shù)是一類特殊函數(shù),功能類似中斷函數(shù),其調用過程由系統(tǒng)自動完成,回調函數(shù)的具體內容則由用戶設定,在系統(tǒng)中當某一回調函數(shù)被設定后,在某一特定的條件滿足時,系統(tǒng)自動調用該回調函數(shù),如:Video -Stream Callback、capStatusCallback 等函數(shù);在 AVICap類中,宏的使用完全類似于普通函數(shù),其功能等同發(fā)送相應的 Windows 窗口消息;AVICap 窗口類中的普通函數(shù)只有兩個,capGetDriverDescription CreateCaptureWindow。下面將應用程序設計中常用到的幾個主要的AVIcap 窗口類函數(shù)加以介紹。
(1)HWNDVFWAPIcapCreateCaptureWindow (LPC2STR lpszWindowName , DWORD dwStyle , int x , int y ,int nWidth, int nHeight , HWND hWnd, int nID) ;
該函數(shù)主要完成視頻捕捉窗口的開辟,如果函數(shù)調用成功,返回該窗口句柄,否則返回“NULL”。
(2)Int capDriverConnect ( HWND hWnd, int iIn2dex) , capDriverDisconnect (HWND hWnd)該兩宏函數(shù)負責將視頻窗口與捕捉設備相連接或斷開。如成功,返回“TRUE”, 否則返回“FALSE”。
(3)int FileSetCaptureFile (HWND hWnd, LPCSTRFilename) 。該函數(shù)用于設置存儲視頻數(shù)據(jù)的影音文件名。函數(shù)調用成功,返回“TRUE”, 否則返回“FALSE”。
(4)BOOL capFileSaveDIB (HWND hwnd, LPCSTRszName) 函數(shù)負責捕捉視頻窗口當前圖像,并將其數(shù)據(jù)以BMP 文件格式存儲到名為 szName 的位圖文件中。
(5)BOOL capCaptureSequence (HWND hWnd) 宏函數(shù)主要負責觸發(fā)程序開始捕捉視頻流圖像并將其壓入所設定影音數(shù)據(jù)文件中。
(6)BOOL capPreviewRate(hwnd,wMS)宏函數(shù)負責設置視頻圖像預覽速度。
3 視頻圖像實時采集程序的編制實例
實時視頻捕獲的流程.
本系統(tǒng)的視頻圖像捕獲流程如圖1所示。
4 結語
Visual C++中提供的AVICap窗口類為捕獲數(shù)字視頻圖像及其相關操作提供了很大的方便,基于此思想開放出來的視頻捕獲應用程序,界面形象直觀,性能穩(wěn)定,具有很好的靈活性和可擴展性,在很多數(shù)字圖像處理技術的圖像測量系統(tǒng)中都使用了這種方法。
參考文獻
[1]David J Kruglinski(美) 著,Visual C++技術內幕[M],北京:清華大學出版社,2002.Beijing.
[2]官章全,韓云君,Visual C++高級編程范例[M],北京:電子工業(yè)出版社,2001.
[3]石峻,余松煜.Windows環(huán)境下的實時視頻捕獲技術[J].計算機工程,1999,25(8).
[4]陳琿,張會汀,周杰華 利用VFW實現(xiàn)實時視頻捕獲及應用[J],計算機應用,2003年第8期141-143頁.
①作者簡介:趙磊,男,滿族,助理工程師,研究生。