• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      DirectShow技術(shù)在W indows CE系統(tǒng)中的圖像采集實現(xiàn)

      2011-02-08 09:06:12陳浩明王小英
      常熟理工學(xué)院學(xué)報 2011年4期
      關(guān)鍵詞:視頻流窗體預(yù)覽

      王 輝,陳浩明,王小英

      (常熟理工學(xué)院 計算機科學(xué)與工程學(xué)院,江蘇 常熟 215500)

      DirectShow是微軟公司在ActiveMovie和Video for Windows的基礎(chǔ)上推出的新一代基于COM(Component Object Model)的流媒體處理的開發(fā)包[1].它采用流水線的工作思想,可以實時處理并輸出采集到的數(shù)據(jù)流,具有很強的時效性和靈活性.DirectShow屏蔽了硬件設(shè)備的差異性,降低了流媒體處理軟件的開發(fā)難度,支持多種媒體數(shù)據(jù)類型的解碼播放、格式轉(zhuǎn)化,同時還具有VFW(Video for Windows)視頻采集方式所不支持的多路音視頻數(shù)據(jù)同時采集的功能,可以輕松地應(yīng)用于視頻監(jiān)視系統(tǒng)、視頻會議、視頻點播等系統(tǒng)的開發(fā)[2,3].

      目前隨著嵌入式系統(tǒng)的普及,DirectShow被成功地移植到了Windows CE嵌入式系統(tǒng)之中[4],為Windows CE系統(tǒng)中的多媒體應(yīng)用的開發(fā)提供了有力的支持.通過DirectShow技術(shù),可以基于Windows CE嵌入式系統(tǒng)高效的開發(fā)OCR(Optical Character Recognition)(光學(xué)字符識別)產(chǎn)品,網(wǎng)絡(luò)視頻監(jiān)視產(chǎn)品,網(wǎng)絡(luò)視頻會議播放產(chǎn)品等一些具有廣闊市場前景的流媒體應(yīng)用產(chǎn)品.

      1 DirectShow系統(tǒng)框架

      DirectShow是一個開放性的應(yīng)用架構(gòu),如圖1所示.應(yīng)用程序在使用DirectShow時將按照一定的意圖建立起相應(yīng)的Filter Graph,通過Filter Graph Manager來控制整個數(shù)據(jù)處理過程.DirectShow在Filter Graph運行的時候接收各種事件,通過消息的方式發(fā)送到應(yīng)用程序,實現(xiàn)應(yīng)用程序與DirectShow系統(tǒng)之間的交互.

      DirectShow中有三種Filter,分別是Source Filter,Transform Filter和Rendering Filter.Source Filters主要負責(zé)取得數(shù)據(jù),數(shù)據(jù)源可以是文件、因特網(wǎng)、或者計算機里的采集卡、數(shù)字攝像機等,然后將數(shù)據(jù)向下傳輸;Transform Filers主要負責(zé)數(shù)據(jù)的格式轉(zhuǎn)換、傳輸;Rendering Filters主要負責(zé)數(shù)據(jù)的最終去向,可以將數(shù)據(jù)傳送至聲卡、顯卡進行多媒體的演示,也可以輸出到文件進行存儲.每個Filter都有其自己的連接Pin.Filter通過輸入和輸出Pin進行不同F(xiàn)ilter之間的連接.

      DirectShow采用了COM標準,在Direct-Show中提供了IGraphBuilder、IMediaControl、IVideoWindow等重要接口來完成視頻流的采集與控制功能.使用DirectShow進行攝像頭的視頻流捕獲時,首先需構(gòu)建一個ICaptureGraphBuilder2和IGraphBuilder的COM對象,然后對攝像頭驅(qū)動進行枚舉,并將視頻捕獲濾鏡與攝像頭驅(qū)動建立關(guān)聯(lián),最終通過IGraphBuilder的對象查找IMediaControl接口和IVideoWindows接口實現(xiàn)預(yù)覽窗體的設(shè)置和流媒體的基本控制.

      圖1 DirectShow系統(tǒng)框架

      2 DirectShow在W indows CE上的實現(xiàn)

      在Windows CE5.0以上的版本中都提供了可以直接調(diào)用攝像頭的API函數(shù),但是這些函數(shù)功能都過于簡單,為此Microsoft公司又將DirectShow移植到Windows CE5.0以上的系統(tǒng)中,針對嵌入式設(shè)備的CPU的處理能力較弱以及嵌入式設(shè)備的內(nèi)存容量較小的特點,Microsoft公司在移植DirectShow時也進行了必要裁剪,而這也導(dǎo)致了在Windows CE上進行DirectShow應(yīng)用的開發(fā)相比于在PC機上的開發(fā)要有所不同.

      本軟件的開發(fā)使用Visual Studio 2005開發(fā)工具中的智能設(shè)備開發(fā)環(huán)境,語言選擇了c++,因為c++可以自由地申請和釋放內(nèi)存,以節(jié)約嵌入式系統(tǒng)中的有限內(nèi)存資源.在開發(fā)Windows CE應(yīng)用程序之前,首先需要安裝Windows CE的SDK,該開發(fā)包提供了DirectShow應(yīng)用程序開發(fā)所需的庫函數(shù).

      為了在工程里面能夠正常地使用DirectShow,首先需要在工程中添加“dshow.h”頭文件以及aygshell.lib和strmiids.lib兩個靜態(tài)庫.由于DirectShow是基于COM開發(fā),因此為了方便接口的調(diào)用和釋放,可以使用智能指針CComptr<>,因此也需要添加atlbase.h這個頭文件.

      DirectShow在Windows CE系統(tǒng)上驅(qū)動攝像頭,采集圖像并保存的流程如圖2所示.

      本文在 Windows CE系統(tǒng)中通過DirectShow技術(shù)實現(xiàn)了視頻捕獲的應(yīng)用軟件,主要包括視頻流采集與預(yù)覽、視頻流和圖片保存、視頻流格式設(shè)置以及預(yù)覽窗體創(chuàng)建四個模塊.

      2.1 視頻流采集與預(yù)覽

      該模塊為整個軟件的核心部分,其流程圖如圖3所示.在該流程中,查找攝像頭的驅(qū)動并與視頻捕獲濾鏡建立關(guān)聯(lián)的方法不同于PC機上方式,因為Windows CE中的攝像頭數(shù)目有限,不需要特意地去枚舉視頻捕捉設(shè)備,Windows CE的SDK中提供了FindFirstDevice函數(shù),可以方便地查找到攝像頭設(shè)備.

      通過FindFirstDevice進行查找設(shè)備驅(qū)動時需要使用Windows CE中攝像頭驅(qū)動的GUID,其GUID為{0xCB998A05,0x122C,0x4166,0x84,0x6A,0x93,0x3E,0x4D,0x7E,0x3C,0x86}.其實現(xiàn)代碼如下:

      圖2 DirectShow在Windows CE上的圖像采集

      2.2 視頻流和圖片保存

      在實現(xiàn)圖片或視頻保存時,DirectShow提供了設(shè)置視頻或圖片存儲格式的功能,但是這些功能受到硬件條件的制約,并非每款設(shè)備上都能實現(xiàn)對視頻或圖片格式的設(shè)置.

      對圖片進行保存的核心實現(xiàn)代碼如下:

      圖3 視頻流捕獲模塊流程圖

      2.3 設(shè)置視頻流格式與創(chuàng)建預(yù)覽窗體

      通過DirectShow技術(shù)可以比較簡單地設(shè)置視頻流的像素、采集頻率以及圖像的位數(shù),不過這些參數(shù)的設(shè)置也需要硬件的支持才可以實現(xiàn).視頻格式的設(shè)置主要由IAMStreamConfig接口提供,該接口由ICaptureGraph-Builder2的COM對象獲得,在Windows CE中可以使用 AM_MEDIA_TYPE和VIDEOINFOHEADER結(jié)構(gòu)體來保存原始視頻流格式以及設(shè)置后的視頻流的格式.

      DirectShow在進行預(yù)覽攝像頭采集的視頻流之前需要先設(shè)置預(yù)覽窗體,該窗體的接口通過濾鏡管理器進行查詢得出.控制視頻窗體的接口為IVedioWindow,通過該接口可以設(shè)置視頻窗體的風(fēng)格,大小和所在窗體的位置.視頻流能夠正常運行還需要IGraphBuild的COM對象提供IMediaControl接口來進行控制,只有視頻流進行了正常采集的時候,預(yù)覽窗體才會進行視頻流的實時顯示.

      3 系統(tǒng)性能分析

      圖4 DirectShow技術(shù)實現(xiàn)的系統(tǒng)

      圖5 設(shè)置顯示窗體的大小

      圖4和圖5分別是用DirectShow技術(shù)和系統(tǒng)自帶的API函數(shù)實現(xiàn)的圖像采集系統(tǒng).采用DirectShow技術(shù)實現(xiàn)的系統(tǒng)其靈活性遠遠超過了采用系統(tǒng)自帶的API函數(shù)實現(xiàn)的系統(tǒng).該軟件可以設(shè)置圖像的分辨率、視頻預(yù)覽窗體的大小、視頻的旋轉(zhuǎn)、保存視頻流或從視頻流中捕獲的圖片,實現(xiàn)了視頻采集應(yīng)用的基本功能.同時,使用DirectShow自帶的濾鏡或者用戶自定義的濾鏡可以實現(xiàn)視頻流的實時處理,還可以開發(fā)更為高級的應(yīng)用功能,而使用Windows CE系統(tǒng)中自帶的一些API時,只能調(diào)用系統(tǒng)自帶的拍照程序,用戶無法對其添加其他功能,也不能對實時的視頻流進行處理,無法開發(fā)一些具有實際價值的應(yīng)用.

      除此之外,因為DirectShow只涉及到視頻流的采集與處理,因此軟件的界面可以由開發(fā)人員自由設(shè)計,而調(diào)用Windows CE自帶的API函數(shù)時,開發(fā)人員無法對其軟件界面進行修改.在進行單獨的拍照測試時,使用DirectShow開發(fā)的視頻采集軟件的速度也要優(yōu)于直接調(diào)用系統(tǒng)API函數(shù)開發(fā)的系統(tǒng).

      4 結(jié)論

      本文研究了DirectShow技術(shù)的框架及關(guān)鍵技術(shù),并在Windows CE系統(tǒng)中實現(xiàn)了視頻流的圖像采集、預(yù)覽、處理、保存等功能,為今后在Windows CE嵌入式系統(tǒng)中開發(fā)視頻監(jiān)視系統(tǒng)、OCR系統(tǒng),以及將Windows CE系統(tǒng)應(yīng)用到攝像機、照相機等設(shè)備中提供了初步的技術(shù)驗證.

      [1]陸其明.DirectShow開發(fā)指南[M].北京:清華大學(xué)出版社,2009.

      [2]唐蕓,杜江紅,陳繼華.基于COM技術(shù)的DirectShow視頻采集的研究[J].三峽大學(xué)學(xué)報(自然科學(xué)版),2003(6).

      [3]黃振宇,王敏,吳濤.基于COM的Directshow Filter實現(xiàn)[J].微機發(fā)展,2004(5).

      [4]邱小平.WindowsCE 6.0開發(fā)經(jīng)典[M].北京:電子工業(yè)出版社,2009.

      猜你喜歡
      視頻流窗體預(yù)覽
      邊緣實時視頻流分析系統(tǒng)配置動態(tài)調(diào)整算法研究
      新品預(yù)覽
      基于視頻流傳輸中的擁塞控制研究
      試談Access 2007數(shù)據(jù)庫在林業(yè)檔案管理中的應(yīng)用
      檔案天地(2019年5期)2019-06-12 05:12:02
      11月在拍電視劇預(yù)覽表
      電視指南(2016年11期)2016-12-20 22:09:38
      美國視頻流市場首現(xiàn)飽和征兆
      基于LayeredWindow的異形窗體局部刷新
      中文信息(2014年2期)2014-03-06 23:49:14
      bauma China 2014展前預(yù)覽
      巧設(shè)WPS窗體控件讓表格填寫更規(guī)范
      視頻網(wǎng)格中流媒體業(yè)務(wù)的流量模型
      额尔古纳市| 泰兴市| 拜泉县| 兴安县| 巴林右旗| 莆田市| 乌拉特后旗| 手游| 融水| 石门县| 阳春市| 南阳市| 万安县| 临城县| 峨边| 贵阳市| 奉化市| 斗六市| 龙川县| 灵寿县| 安康市| 镇康县| 城口县| 兴国县| 南川市| 莱西市| 阿克陶县| 灵宝市| 禄劝| 洞头县| 卢龙县| 满洲里市| 新乡市| 宣汉县| 澳门| 双牌县| 海城市| 平舆县| 保靖县| 江阴市| 承德县|