新聞中心
使用VFW寫(xiě)的C#控制攝像頭最大的問(wèn)題就在于需要自己手動(dòng)另起一個(gè)線(xiàn)程。(這里,我們定義一個(gè)叫AviCapture.cs的類(lèi),用于引入avicap32.dll以及相關(guān)的內(nèi)容)在avicap32.dll中,CAPTUREPARMS結(jié)構(gòu)里有一個(gè)fYield的東東,代表的意思是另起線(xiàn)程標(biāo)志位,如果為真,則程序重新啟動(dòng)一個(gè)線(xiàn)程用于視頻流的捕獲,默認(rèn)值是假。但是如果你是為了真,你必須要在程序中處理一些潛在的操作,因?yàn)楫?dāng)視頻捕獲時(shí),其他操作并沒(méi)有被屏蔽。。在AviCapture這個(gè)類(lèi)的基礎(chǔ)上定義一個(gè)叫Video的類(lèi),實(shí)現(xiàn)控制設(shè)想頭的一些方法,如打開(kāi)攝像頭,關(guān)閉攝像頭,開(kāi)始錄像,結(jié)束錄像,拍照片等等。。。。在Video類(lèi)中還要定義兩個(gè)C#控制攝像頭函數(shù)如下:

- publicvoidget()
- {
- AviCapture.SendMessage(this.lwndC,AviCapture.WM_CAP_GET_SEQUENCE_SETUP,AviCapture.SizeOf(Capparms),refCapparms);
- }
- publicvoidset()
- {
- AviCapture.SendMessage(this.lwndC,AviCapture.WM_CAP_SET_SEQUENCE_SETUP,AviCapture.SizeOf(Capparms),refCapparms);
- }
用來(lái)獲得和設(shè)置相關(guān)的C#控制攝像頭參數(shù)
最后,在主窗體類(lèi)中,做如下調(diào)用
- video.get();//
- video.Capparms.fYield=true;//另起一個(gè)線(xiàn)程
- video.Capparms.fAbortLeftMouse=false;//鼠標(biāo)左鍵單擊停止為false
- video.Capparms.fAbortRightMouse=false;//鼠標(biāo)右鍵單擊停止為false
- video.set();
在這里還有強(qiáng)調(diào)一下,上面的這段函數(shù)要用在視頻預(yù)覽函數(shù)之后(也就是打開(kāi)攝像頭那個(gè)函數(shù)),否則是不起作用的。
網(wǎng)頁(yè)標(biāo)題:C#控制攝像頭實(shí)例談
分享網(wǎng)址:http://www.fisionsoft.com.cn/article/cdjoocc.html


咨詢(xún)
建站咨詢(xún)
