国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

無(wú)線(xiàn)視頻信號(hào)采集系統(tǒng)設(shè)計(jì)

2015-06-29 17:43賈磊
科技資訊 2015年14期

賈磊

摘 要:無(wú)線(xiàn)視頻采集系統(tǒng)由無(wú)線(xiàn)攝像頭采集視頻信息并發(fā)射一定頻率的無(wú)線(xiàn)信號(hào),發(fā)送出的無(wú)線(xiàn)模擬信號(hào)由無(wú)線(xiàn)信號(hào)接收器接收,通過(guò)視頻連接線(xiàn)把信號(hào)送到USB視頻采集卡EASYCAP中,視頻采集卡把送入的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)送到連接的計(jì)算機(jī)中,實(shí)現(xiàn)無(wú)線(xiàn)視頻的采集和通過(guò)軟件在計(jì)算機(jī)中對(duì)信號(hào)進(jìn)行處理。

關(guān)鍵詞:無(wú)線(xiàn)視頻信號(hào)采集 VC++ VFW 截圖錄像

中圖分類(lèi)號(hào):TN911 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2015)05(b)-0028-03

隨著社會(huì)的不斷進(jìn)步,各領(lǐng)域得到了迅速的發(fā)展,機(jī)械化、自動(dòng)化已經(jīng)成為了現(xiàn)代生產(chǎn)生活的主流生產(chǎn)方式,這樣就對(duì)監(jiān)控系統(tǒng)有了一個(gè)更高更成熟的要求,需要有一套方便可靠的視頻采集系統(tǒng)作為監(jiān)控系統(tǒng)的平臺(tái)。視頻采集系統(tǒng)分為有線(xiàn)視頻傳輸網(wǎng)絡(luò)和無(wú)線(xiàn)視頻傳輸網(wǎng)絡(luò),在特殊工作環(huán)境越來(lái)越占據(jù)我們大部分工作的今天,周邊的工作環(huán)境不允許使用有線(xiàn)網(wǎng)絡(luò),并且還帶來(lái)了高建設(shè)、和高維修的費(fèi)用,所以無(wú)線(xiàn)視頻信號(hào)的采集系統(tǒng)已經(jīng)變成國(guó)際上重點(diǎn)的研究和發(fā)展方向。無(wú)線(xiàn)視頻采集系統(tǒng)可以運(yùn)用在工廠,用于監(jiān)控自動(dòng)化高的生產(chǎn)設(shè)備,也可以裝載到機(jī)器人中完成特殊的任務(wù),比如排爆機(jī)器人,降低人員的傷亡。

現(xiàn)在對(duì)無(wú)線(xiàn)信號(hào)的采集和處理主要通過(guò)視頻采集卡進(jìn)行采集,有一些公司生產(chǎn)的采集卡提供第三方的軟件開(kāi)發(fā)包(SDK)這樣便于用戶(hù)進(jìn)行第二次開(kāi)發(fā)。在監(jiān)視計(jì)算機(jī)方面主要使用VC++,VB等開(kāi)發(fā)軟件進(jìn)行監(jiān)視界面的開(kāi)發(fā),但是總體比起來(lái)VC++在視頻處理上比VB較為成熟,利用VC++中的VFW視頻開(kāi)發(fā)包對(duì)視頻采集卡采集回來(lái)的視頻信號(hào)進(jìn)行處理。

1 視頻信號(hào)采集系統(tǒng)組成

該系統(tǒng)的組成大致分為硬件和軟件部分,該文對(duì)軟件部分的設(shè)計(jì)和開(kāi)發(fā)做著重的介紹,軟件部分則利用VC++6.0為軟件開(kāi)發(fā)平臺(tái)。

1.1 硬件部分

硬件部分由無(wú)線(xiàn)攝像頭、攝像頭信號(hào)接收器和USB視頻采集卡三部分組成。硬件連接如圖1所示。

USB視頻采集卡工作原理。

該次視頻采集系統(tǒng)采用的是EASYCAP的USB視頻采集卡,視頻采集卡是我們進(jìn)行視頻處理必不可少的硬件設(shè)備,無(wú)線(xiàn)攝像頭發(fā)送的和無(wú)線(xiàn)信號(hào)接收器接收的信號(hào)是連續(xù)的模擬信號(hào),但是計(jì)算機(jī)卻不會(huì)識(shí)別模擬信號(hào),計(jì)算機(jī)只識(shí)別0或1這樣的二進(jìn)制碼,這樣就需要一個(gè)像本系統(tǒng)中的USB視頻采集卡把無(wú)線(xiàn)視頻接收器采集到的模擬信號(hào)進(jìn)行模/數(shù)轉(zhuǎn)換,把連續(xù)的模擬信號(hào)轉(zhuǎn)換成離散的數(shù)字信號(hào),這樣經(jīng)過(guò)轉(zhuǎn)換后的數(shù)字信號(hào)就可以被計(jì)算機(jī)編輯、處理和保存了。

在該系統(tǒng)中視頻采集軟件通過(guò)驅(qū)動(dòng)識(shí)別USB視頻采集卡并對(duì)采集回來(lái)的信息進(jìn)行處理,因?yàn)橐曨l采集卡采集到的都是一幅幅靜態(tài)圖片,所以要在軟件中設(shè)置與USB視頻采集卡相匹配的采集速率,這樣就能對(duì)視頻信號(hào)進(jìn)行靜態(tài)圖片的抓取和保存,對(duì)視頻流信號(hào)進(jìn)行保存。具體數(shù)/模轉(zhuǎn)換流程如圖2。

1.2 軟件部分

軟件部分主要采用了VC++6.0來(lái)編寫(xiě)采集程序。

VC++6.0由微軟公司開(kāi)發(fā),它是一個(gè)基于Windows操作系統(tǒng)的可視化集成開(kāi)發(fā)環(huán)境,同時(shí)也具備C++語(yǔ)言編譯器的功能。Visual C++6.0由編輯器、調(diào)試器以及程序向?qū)ppWizard、類(lèi)向?qū)lass Wizard等開(kāi)發(fā)工具組成。

VFW(Video for windows)是視頻開(kāi)發(fā)應(yīng)用的一種早期技術(shù)。Microsoft的Visual C++從4.0版開(kāi)始就支持Video for Windows(簡(jiǎn)稱(chēng)VFW)了,這給視頻捕獲編程帶來(lái)了很大的方便。VFW(Video for Windows)是微軟公司開(kāi)發(fā)的針對(duì)于Windows自帶的一個(gè)數(shù)字視頻編輯軟件開(kāi)發(fā)包。用戶(hù)不用自己安裝VFW,而是Windows系統(tǒng)中自帶了這個(gè)視頻開(kāi)發(fā)包,方便了用戶(hù)的使用。VFW的中心就是一個(gè)AVI文件標(biāo)準(zhǔn),AVI(Audio Video Interleave)就是一種聲音和視頻同步組合在一起的一種文件,它是一種有損的壓縮形式。

在VFW中為用戶(hù)提供了一套完整的應(yīng)用程序接口(API),API可以為用戶(hù)提供一種與應(yīng)用程序訪問(wèn)一組例程的能力,而且用戶(hù)不需要訪問(wèn)源碼和了解內(nèi)部工作的細(xì)節(jié)。編寫(xiě)程序時(shí)可以利用API函數(shù)來(lái)編寫(xiě)應(yīng)用程序,這樣就可以避免編寫(xiě)無(wú)用程序,減小工作量。

VFW的視頻捕獲主要由AVICap窗口類(lèi)來(lái)完成。AVICap窗口類(lèi)為應(yīng)用程序提供了一個(gè)基于消息的接口。在該系統(tǒng)中視頻的捕獲和單幀捕獲都是靠AviCap所提供的強(qiáng)大全面的函數(shù)和宏實(shí)現(xiàn)的,這是微軟公司開(kāi)發(fā)的VFW開(kāi)發(fā)包為我們編輯視頻采集軟件提供的一條捷徑,可以使用簡(jiǎn)單易讀的函數(shù)和宏就可以達(dá)到我們編程需要達(dá)到的目的。

AVICap有兩種顯示視頻的格式:(1)預(yù)覽模式(preview),這是一個(gè)使用CPU資源的模式。視頻流首先從采集硬件保存到系統(tǒng)內(nèi)存,之后通過(guò)GDI函數(shù)將視頻信息顯示在捕獲窗口中。從硬件角度講,該模式需要使用VGA卡,通過(guò)VGA卡顯示在監(jiān)視器上。(2)疊加模式(Overlay)該模式顯示視頻是通過(guò)硬件的疊加,疊加的視頻是不需要通過(guò)VGA卡的,疊加視頻的硬件把自身的輸出信號(hào)與VGA輸出信號(hào)合并,最后顯示到監(jiān)視器上的信號(hào)是二者的組合信號(hào)。

2 VFW視頻采集的開(kāi)發(fā)

2.1 開(kāi)發(fā)應(yīng)用程序的步驟

VC++應(yīng)用程序開(kāi)發(fā)的一般步驟為:(1)創(chuàng)建一個(gè)項(xiàng)目;(2)采用workspace窗口和它的class view, file view, resource view去建立項(xiàng)目中的C++類(lèi)、文件和資源;(3)將文件從項(xiàng)目中添加或刪除;(4)編輯項(xiàng)目的源代碼和資源;(5)為項(xiàng)目指定配置(Debug或Release);(6)連遍項(xiàng)目文件;(7)糾正連遍錯(cuò)誤;(8)執(zhí)行并測(cè)試生成的可執(zhí)行文件;(9)測(cè)試項(xiàng)目文件;(10)剖視以及代碼優(yōu)化。

2.2 VFW采集開(kāi)發(fā)流程

使用VFW進(jìn)行視頻采集大致分為如下幾個(gè)部分基本流程。

(1)使用函數(shù)capCreatureWindows(...)創(chuàng)建應(yīng)用程序的視頻捕獲窗口。(2)使用函數(shù)capsetcallbackonstatus(...)函數(shù)處理回調(diào)函數(shù)狀態(tài),并用capsCalLbackonerror(...)函數(shù)來(lái)設(shè)置錯(cuò)誤信息的回調(diào)處理。但是該次系統(tǒng)設(shè)計(jì)沒(méi)有使用回調(diào)函數(shù)。(3)查找USB視頻采集卡的驅(qū)動(dòng)并連接。(4)得到USB視頻采集卡的驅(qū)動(dòng)信息。(5)判斷是否連接正確,并設(shè)置采集速率。

2.3 監(jiān)控系統(tǒng)的建立

使用VFW的宏函數(shù)實(shí)現(xiàn)視頻捕獲和預(yù)覽,應(yīng)用程序簡(jiǎn)單、控制靈活。在本系統(tǒng)中,是基于VC++6.0的對(duì)話(huà)框應(yīng)用程序框架實(shí)現(xiàn)編程開(kāi)發(fā),很多的應(yīng)用程序都是基于這種開(kāi)發(fā)方式的。另一部分應(yīng)用就是基于文檔的編程開(kāi)發(fā),單文檔是主流。文檔應(yīng)用程序的最大特點(diǎn)是有標(biāo)準(zhǔn)菜單、客戶(hù)區(qū)域任意調(diào)整;缺點(diǎn)是相對(duì)比對(duì)話(huà)框類(lèi),開(kāi)發(fā)難度較大。

2.3.1 建立單文檔應(yīng)用程序

該系統(tǒng)是基于VC++6.0的項(xiàng)目建立向?qū)?chuàng)建一個(gè)單文檔、無(wú)工具欄和狀態(tài)欄的應(yīng)用程序,下面是建立單文檔應(yīng)用程序的詳細(xì)步驟:首先啟動(dòng)VC++6.0,選擇“文件”→“新建”→“工程”命令。在工程選擇卡中,選擇MFC AppWizard(exe)。

工程名稱(chēng)欄中輸入工程的名稱(chēng),位置欄中輸入的是工程所保存的文件位置。

下一步需要選擇創(chuàng)建應(yīng)用程序的類(lèi)型有三類(lèi)分別為:?jiǎn)挝臋n、多重文檔和基本對(duì)話(huà)框,由于本系統(tǒng)是視頻采集界面,所以選擇的應(yīng)用程序?yàn)榛緦?duì)話(huà)框應(yīng)用程序,點(diǎn)擊完成就成功的建立了一個(gè)基本對(duì)話(huà)框的應(yīng)用程序工程。

2.3.2 建立對(duì)話(huà)框

對(duì)話(huà)框是監(jiān)控軟件和用戶(hù)的交互平臺(tái),使用者可以在對(duì)話(huà)框中直接預(yù)覽由USB視頻采集卡采集到VC++中的視頻信息,并對(duì)其進(jìn)行抓取截圖、錄像、暫停和退出等功能,這些功能會(huì)以按鈕的形勢(shì)提供給使用者,方便對(duì)視頻信號(hào)進(jìn)行想要的處理。對(duì)話(huà)框建立的詳細(xì)步驟如下:在工作空間下選擇“resource view”選項(xiàng)卡打開(kāi)dialog下拉文件并在dialog文件夾上右鍵單擊選擇插入dialog,創(chuàng)建一個(gè)新的對(duì)話(huà)框,此時(shí)新建的對(duì)話(huà)框就出現(xiàn)在右側(cè)工作區(qū)中,我們可以對(duì)其進(jìn)行大小的任意改變。

2.3.3 添加圖像和按鈕控件

對(duì)于本次系統(tǒng)的設(shè)計(jì),需要對(duì)對(duì)話(huà)框添加“圖像”和“按鈕”控件,在工具箱中就可以找到并選擇加入到對(duì)話(huà)框中的任意位置,“圖像”的作用是顯示由USB視頻采集卡轉(zhuǎn)換成的數(shù)字視頻信號(hào),起到一個(gè)監(jiān)視屏的作用,因?yàn)榇a中已經(jīng)把窗口的大小作為一個(gè)指針,送到窗口創(chuàng)建函數(shù)capCreatureWindows()中了,當(dāng)程序初始化時(shí)可以自動(dòng)識(shí)別到窗口的大小并返回一個(gè)寬度和高度值,所以圖像控件可以隨意更改大小,函數(shù)中設(shè)置窗口X軸坐標(biāo)和Y軸坐標(biāo)的數(shù)據(jù)已經(jīng)被指針?biāo)〈??!鞍粹o”則為使用者提供對(duì)采集回來(lái)的視頻信息進(jìn)行處理的功能,按鈕有五個(gè)各自的功能分別為:播放、截圖、錄像、暫停和退出。在添加按鈕時(shí)可以改變其名稱(chēng),這個(gè)名稱(chēng)就是顯示在按鈕上的名稱(chēng),起到提示其功能的作用。當(dāng)添加好按鈕時(shí)雙擊按鈕就可以進(jìn)入到按鈕代碼的編輯,用來(lái)響應(yīng)函數(shù)的功能,在修改控件ID后,比如一個(gè)按鈕控件,假設(shè)使ID為BUTTON1則建立按鈕后在窗口類(lèi)中的對(duì)話(huà)框類(lèi)中自動(dòng)添加了一個(gè)名為ONBUTTON1的按鈕控件類(lèi)。這個(gè)類(lèi)則包含了這個(gè)按鈕所包含的一些屬性和信息。

關(guān)于窗口類(lèi),我們?cè)谶\(yùn)行程序的時(shí)候可以直接看到窗口對(duì)話(huà)框,在窗口建立之前系統(tǒng)要知道怎樣建立一個(gè)窗口,和窗口返回的一些信息要交給誰(shuí)處理。這樣就需要我們創(chuàng)建一個(gè)窗口類(lèi)來(lái)定義我們?cè)O(shè)計(jì)的窗口的各種信息,比如窗口的消息、函數(shù)的處理、窗口的風(fēng)格、圖標(biāo)、鼠標(biāo)、菜單等等??梢允拱粹o實(shí)現(xiàn)各種功能。下圖為設(shè)計(jì)好的對(duì)話(huà)框。

具體程序代碼不再詳述。

3 運(yùn)行調(diào)試

代碼編輯完成后就要把工程保存,之后就可以編譯了,在編譯菜單下選擇編譯選項(xiàng)(也可以直接按F7鍵,同樣可以對(duì)源文件進(jìn)行編譯),對(duì)源文件進(jìn)行編譯、執(zhí)行及編譯配置等操作,該菜單位于編譯器的頂層菜單中。按F5可以調(diào)試應(yīng)用程序,查看程序的運(yùn)行情況。如果在調(diào)試程序時(shí)遇到問(wèn)題,可以使用編譯器中的“幫助”菜單調(diào)用MSDN幫助文件來(lái)解決問(wèn)題。編譯后在工程的文件夾下有個(gè)一DEBUG的文件夾中就會(huì)生成應(yīng)用程序圖標(biāo),雙擊就會(huì)運(yùn)行應(yīng)用程序。查看應(yīng)用程序的運(yùn)行情況,以及各個(gè)功能的實(shí)現(xiàn)情況是否正常。

在運(yùn)行程序后,因?yàn)橐曨l信號(hào)進(jìn)入到USB視頻采集卡后,采集卡又對(duì)信號(hào)進(jìn)行一次硬件壓縮,性質(zhì)類(lèi)似于對(duì)信號(hào)進(jìn)行了編碼,而本系統(tǒng)采用的是CapAvi來(lái)采集的信號(hào),把壓縮過(guò)的信號(hào)直接顯示到了預(yù)覽窗口中,所以會(huì)有信號(hào)的不穩(wěn)定與數(shù)據(jù)的丟失。

其他的功能正常,程序運(yùn)行正常。

4 結(jié)語(yǔ)

該系統(tǒng)基于VC++6.0利用VFW開(kāi)發(fā)包,對(duì)無(wú)線(xiàn)視頻信號(hào)進(jìn)行采集和處理系統(tǒng)進(jìn)行了設(shè)計(jì)。搭建了一個(gè)無(wú)線(xiàn)視頻信號(hào)采集的平臺(tái)。該系統(tǒng)主要的開(kāi)發(fā)部分為軟件部分,硬件只需進(jìn)行驅(qū)動(dòng)的安裝和硬件連接即可。通過(guò)運(yùn)行調(diào)試,取得了比較好的效果。

參考文獻(xiàn)

[1] 劉銳寧,梁水,李偉明.Visual C++項(xiàng)目開(kāi)發(fā)案例全程實(shí)錄[M].北京.清華大學(xué)出版社,2011:1-62

[2] 任觀就,張永林.實(shí)時(shí)視頻圖像捕獲的實(shí)現(xiàn)方法[J].計(jì)算機(jī)工程,2002,28(8):268-270.

[3] 陳琿,張會(huì)汀,周杰華.利用VFW實(shí)現(xiàn)實(shí)時(shí)視頻捕獲及其應(yīng)用[J].計(jì)算機(jī)應(yīng)用.2003,23(8):141-143.

[4] 張艷珍,鞏玉國(guó),歐宗瑛,等.基于Windwos平臺(tái)的視頻捕獲技術(shù)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2002(3):10-12.

边坝县| 安塞县| 唐山市| 墨玉县| 吴堡县| 绥棱县| 开鲁县| 沂水县| 左权县| 岑溪市| 辽宁省| 边坝县| 陆良县| 深水埗区| 肥城市| 中山市| 宜州市| 黄平县| 百色市| 兰考县| 汪清县| 育儿| 苗栗县| 开江县| 上栗县| 乌苏市| 永城市| 正宁县| 延津县| 普陀区| 娄底市| 韩城市| 潍坊市| 增城市| 比如县| 平罗县| 伊金霍洛旗| 察哈| 浮山县| 定西市| 五华县|