陳希球,田有成
(1.長江工程職業(yè)技術(shù)學(xué)院,武漢430212;2.長江中游水文水資源勘測局,武漢430010)
美國國家儀器公司(National Instruments)的軟件產(chǎn)品labVIEW,以圖形化編程模式更顯直觀高效,同時又不乏靈活性。其應(yīng)用范圍覆蓋工業(yè)自動化、測試測量、嵌入式應(yīng)用、運動控制、圖象處理、計算機仿真等眾多領(lǐng)域。在圖象處理方面,提供了極其豐富的處理與算法分析函數(shù),易于用戶構(gòu)建處理系統(tǒng),縮短了系統(tǒng)開發(fā)周期。由于NI公司提供的圖象采集卡價格不菲,構(gòu)建應(yīng)用系統(tǒng)時,硬件采用通用圖象采集卡,再利用labVIEW強大的軟件資源,不失為明智之舉,既節(jié)省成本,又方便軟件設(shè)計。
labVIEW的互聯(lián)接口函數(shù)面板中提供了調(diào)用庫函數(shù)節(jié)點(CLN),利用CLN可以調(diào)用DLL和API函數(shù)。在使用CLN節(jié)點時,需要利用對話框配置調(diào)用環(huán)境,包括指定DLL或API對應(yīng)文件的路徑,調(diào)用規(guī)范應(yīng)選用stdcall(WINAPI),在線程選項中應(yīng)選擇“在UI線程中運行”選項。不同函數(shù)的參數(shù)個數(shù)和參數(shù)數(shù)據(jù)類型都不盡相同,在配置時要按函數(shù)的要求增加相應(yīng)參數(shù)并選擇對應(yīng)的數(shù)據(jù)類型,在選擇數(shù)據(jù)類型時要注意labVIEW中的數(shù)據(jù)類型與C語言的對應(yīng)關(guān)系。
Window提供了實時音視頻處理動態(tài)鏈接庫avicap32.DLL,可以創(chuàng)建捕捉窗口,并通過向窗口發(fā)送消息實現(xiàn)視頻捕捉。其相關(guān)函數(shù)和消息說明如下:
capCreateCaptureWindow為建立捕捉窗口,參數(shù)分別為新建窗口標(biāo)題、窗口風(fēng)格、窗口相對父窗口的坐標(biāo)、窗臺的寬度和高度、父窗口句柄和窗口ID。如果窗口建立成功,則返回捕捉窗口句柄。
LRESULT SendMessage (HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam)函數(shù)將指定的消息發(fā)送到一個或多個窗口。參數(shù)hWnd為接收消息的窗口的句柄,Msg為指定被發(fā)送的消息,wParam和IParam指定附加的消息特定信息。主要與視頻捕捉有關(guān)的消息。①WM_CAP_SET_PREⅥEW ,設(shè)置預(yù)覽模式;②WM_CAP_SET_OVERLAY ,設(shè)置覆蓋;③WM_CAP_SET_PREⅥEWRATE,設(shè)置采樣幀速率;④WM_CAP_GRAB_FRame,捕捉單幀作為靜止圖象;⑤WM_CAP_DRIVER_CONNECT ,連接攝像機;⑥WM_CAP_DRIVER_DISCONNECT,斷開攝像機。
HWND FindWindow (LPCSTR lpClass-Name,LPCSTR lpWindowName)函數(shù)為查找指定程序的窗口句柄,本應(yīng)用中主要用來查找前面板的窗口句柄。參數(shù)lpClassName為指向一個以null結(jié)尾的、用來指定類名的字符串或一個可以確定類名字符串的原子,lpWindowName為指定窗口標(biāo)題的字符串。
labVIEW的主流編程模式為數(shù)據(jù)流驅(qū)動模式,根據(jù)視頻捕捉的實際應(yīng)用,軟件設(shè)計采用事件驅(qū)動模式來實現(xiàn),前面板設(shè)計連接攝像機、斷開攝像機、單幀捕捉三個按鈕,用戶通過點擊相應(yīng)的按鈕實現(xiàn)其對應(yīng)功能。連接攝像機按鈕對應(yīng)程序流程圖如圖1所示。
圖1 連接攝像機按鈕事件流程圖
對應(yīng)labVIEW程序如圖2所示。如果用戶的labVIEW環(huán)境支持私有屬性節(jié)點,也可通過對windows剪切板操作捕捉圖象的復(fù)制與粘貼,從而可簡化程序設(shè)計。圖3為程序運行效果圖。
圖2 連接攝像機按鈕事件labVIEW程序圖
圖3 視頻捕捉程序前面板圖
其它兩個按扭的程序設(shè)計與連接攝像機按扭類似。程序中要建立共享變量將視頻窗口句柄在不同事件結(jié)構(gòu)中傳遞,以實現(xiàn)對同一窗口的消息發(fā)送。
labVIEW具有豐富的函數(shù)資源,同時提供了多種與外部程序的接口,使用labVIEW環(huán)境開發(fā)應(yīng)用程序可以簡化算法設(shè)計,起到事半功倍的效果。本視頻捕捉程序在lab-VIEW2012和windows8環(huán)境調(diào)試通過。
[1]陳樹學(xué),劉 萱.LABVIEW寶典[M].北京:電子工業(yè)出版社,2012.
[2]楊樂平.LABVIEW高級程序設(shè)計[M].北京:清華大學(xué)出版社,2007.