一、介紹

     攝像頭圖像采集處理在業(yè)界有著多種成熟的方案。從老的DirectShow、Grabber技術(shù),到新的Windows Media Foundation框架,網(wǎng)絡(luò)上都有著豐富的參考資料。OpenCV庫里面甚至提供了非常簡潔的接口,用戶只要一兩行代碼即可實現(xiàn)數(shù)據(jù)采集、編解碼等功能,使用起來甚是方便。但是,如果把數(shù)據(jù)采集的任務(wù)放到我們自己的程序中來實現(xiàn)的話,CPU的占用率會比較高。這在某些情況下不太可取。雖然可以實現(xiàn),但是在客戶端使用時效率非常低下。而公司恰好有一項開發(fā)任務(wù):要求采集到攝像頭數(shù)據(jù)后,對圖像數(shù)據(jù)進(jìn)行各種變換處理,然后傳遞給底層驅(qū)動程序,實現(xiàn)虛擬攝像頭功能。具體的效果如果CamMask或者CamTwist:

 seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

     嘗試過自己寫代碼采集攝像頭數(shù)據(jù),然后再進(jìn)行圖像處理。但是換了多種方式都不太理想。要么CPU占用率達(dá)到百分之五六十,要么內(nèi)存占用率達(dá)到六七百兆。采用DirectShow Filter似乎就成了唯一的一種方式。實際測試下來,3K分辨率的視頻CPU占用率保持在30%上下,內(nèi)存在150M上下。這個數(shù)據(jù)還是可以接受的。

二、DirectShow基礎(chǔ)

    DirectShow是Microsoft DirectX技術(shù)體系中的一員,其他成員還包括DirectSound, DirectInput, DirectSetup, DirectX Graphics等。DirectShow技術(shù)是微軟為了解決多媒體應(yīng)用開發(fā)中的一些難題而提出的。例如:如何保證數(shù)據(jù)量巨大的多媒體數(shù)據(jù)處理的高效性?如何讓音視頻時刻保持同步?如何處理各種式樣的媒體格式問題?如何支持目標(biāo)系統(tǒng)中不可預(yù)知的硬件?DirectShow的設(shè)計初衷就是盡量讓應(yīng)用程序開發(fā)人員從復(fù)雜的數(shù)據(jù)傳輸、硬件差異、同步性等工作中解脫出來,總體應(yīng)用框架和底層工作由DirectShow來完成。DirectShow技術(shù)的總體運(yùn)行流程如下:

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

網(wǎng)友評論