使用dshow如何開啟指定攝像頭

2021-09-26 02:50:55 字數 1534 閱讀 6561

hresult

getcameraid()

wchar_t* lpszdevicepath =

_bstr_t

(devicepath)

; cstring strdevice;

strdevice.

format(l

"%s"

, lpszdevicepath);if

(strdevice.

find(l

"vid_0000"

)>=

0&& strdevice.

find(l

"pid_0000"

)>=0)

ppropbag-

>

release()

;}pmoniker-

>

release()

;}}}

couninitialize()

;return hr;

}

hresult

getcameraid()

int isize;

char* pszmultibyte;

//返回接受字串所需緩衝區的大小,已經包含字元結尾符'\0'

isize =

widechartomultibyte

(cp_acp,0

, lpszbstr,-1

,null,0

,null

,null);

//isize =wcslen(pwsunicode)+1=6

pszmultibyte =

(char*

)malloc

(isize *

sizeof

(char));

//不需要 pszmultibyte = (char*)malloc(isize*sizeof(char)+1);

widechartomultibyte

(cp_acp,0

, lpszbstr,-1

, pszmultibyte, isize,

null

,null);

if(0==

strcmp

(szdevicename, pszmultibyte)

)free

(pszmultibyte)

; ppropbag-

>

release()

;}pmoniker-

>

release()

;}}}

couninitialize()

;return hr;

}

在windowsxp下由於裝置名都是usb camera,此方法不適用

繫結裝置過濾器, 我們知道了裝置因為傳入了id

ibasefilter* m_pbf;if(

!bindfilter

(cameraid,

&m_pbf)

)

使用OpenCV開啟指定的攝像頭

因為台式電腦不自帶攝像頭,用opencv在台式電腦上執行以下程式可以直接開啟外接的攝像頭。include include using namespace std using namespace cv int main return 0 但對於本身已經自帶乙個前置攝像頭的膝上型電腦,如果用以上程式就會...

OpenCV4 0開啟指定USB攝像頭問題

網上查了些資料,試圖通過usb攝像頭名稱獲取index,從而開啟指定攝像頭,如下 std vectorlist listdevices list for int i 0 i編譯通過後挺好使,誰知第二天重新開機,竟然開啟的是另外的usb攝像頭!追蹤半天沒發現異常,只能得出結論是listdevice得到...

Linux (多攝像頭)如何執行指定的攝像頭

lz原來一直都是用的筆記本的攝像頭,結果標定的時候快趴地上了,可能是實在看不過去了,師兄給了乙個攝像頭,這樣相當於有兩個攝像頭,但是怎麼開啟指定的攝像頭呢?第乙個,安裝乙個軟體 sudo apt get install cheese安裝好了?哈哈,然後直接執行在終端中輸入 cheese就直接開啟筆記...