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