我正在使用带有videoInput的OpenCV2.2。我想升级到OpenCV2.3.1,其中videoInput显然已合并到OpenCV2.3中。
我的问题是似乎没有listdevices()函数来返回所有可用的视频源。
有人知道新的等价物吗?
答案 0 :(得分:10)
正如你所说,自2.3rc以来,videoinput已在OpenCV中合并。
查看相关的source视频输入似乎是在OpenCV更改日志指定的highgui中。虽然你的OpenCV是否是在启用它的情况下构建的,但是Cmake中的可配置选项(选项为WITH_VIDEOINPUT
并且还要求它是WIN32版本,请参阅here)。
OpenCV在VI.listDevices()
的实现中将listdevices内部调用为CvCaptureCAM_DShow::open
,并且videoInput类是CvCaptureCAM_DShow的受保护成员。
您可以使用
获取访问列表设备功能 CvCapture* capture = cvCaptureFromCAM( CV_CAP_DSHOW );
capture->VI.listDevices();
答案 1 :(得分:2)
请参阅this StackOverflow答案。 OpenCV目前不支持它,因为它是跨平台的,并且摄像机枚举是非常特定于平台的(例如,v4l2枚举与DirectShow不同)。但是,有人在一段时间内提交了enhancement request版本2.2。
答案 2 :(得分:1)
我编写了一个类,它允许使用DirectShow接口和枚举器枚举所有设备。虽然它只适用于Windows,但它允许您获取友好设备名称列表"和您需要创建的ID,例如VideoCapture对象。
代码在这里: