我正在使用OpenCV2.2和videoInput。我想升級到OpenCV2.3.1,其中videoInput已經被合併到OpenCV2.3中。如何使用opencv獲取網絡攝像頭設備列表?
我的問題是,似乎沒有listdevices()函數返回所有可用的視頻源。
有人知道新的等價物嗎?
我正在使用OpenCV2.2和videoInput。我想升級到OpenCV2.3.1,其中videoInput已經被合併到OpenCV2.3中。如何使用opencv獲取網絡攝像頭設備列表?
我的問題是,似乎沒有listdevices()函數返回所有可用的視頻源。
有人知道新的等價物嗎?
請參閱this StackOverflow答案。它目前不被OpenCV支持,因爲它是跨平臺的,並且相機枚舉是非常特定於平臺的(例如,v4l2枚舉與DirectShow不同)。但是,有人在返回時提交了針對版本2.2的enhancement request。
正如你所說videoinput自2.3rc以來已被合併在OpenCV中。
看着相關的source視頻輸入看起來像在OpenCV changelog中指定的highgui。雖然您的OpenCV是否是在啓用它的情況下構建的,但它是Cmake中的一個可配置選項(選項爲WITH_VIDEOINPUT
,並且還要求它是WIN32版本,請參閱here)。
OpenCV在內部調用listdevices作爲VI.listDevices()
執行CvCaptureCAM_DShow::open
,videoInput類是CvCaptureCAM_DShow的受保護成員。
可以使用
CvCapture* capture = cvCaptureFromCAM(CV_CAP_DSHOW);
capture->VI.listDevices();
啓用VI的CMAKE選項是什麼?你能解釋一下嗎?我使用dyour示例代碼片斷。它說VI不是一個有效的對象。 – 2vision2 2013-07-02 05:38:41
我編寫了一個類,允許使用的DirectShow接口和枚舉枚舉所有的設備可以訪問listdevices功能。雖然它只能在Windows上運行,但它可以讓您獲取「友好設備名稱」列表以及您需要創建的id,例如VideoCapture對象。
的代碼是在這裏:
你可以把完整的代碼呢?我試圖列出所有攝像頭設備,但未成功 – 2016-10-14 12:09:44