如何使用opencv获取networking摄像头设备列表?

我正在使用OpenCV2.2与videoInput。 我想升级到OpenCV2.3.1,其中videoInput显然已经合并到OpenCV2.3中。

我的问题是,似乎没有listdevices()函数返回所有可用的video源。

有人知道新的等价物吗?

正如你所说videoinput自从2.3rc以来已经在OpenCV中合并了。

查看相关的源视频输入,看起来像OpenCV更新日志指定的那样。 虽然你的OpenCV是用它启用的是Cmake中的一个可配置的选项(选项是WITH_VIDEOINPUT并且还要求它是一个WIN32版本,请看这里 )。

OpenCV在CvCaptureCAM_DShow::open的实现中在内部调用listdevices作为VI.listDevices() ,videoInput类是CvCaptureCAM_DShow的受保护成员。

你可以使用访问listdevices函数

  CvCapture* capture = cvCaptureFromCAM( CV_CAP_DSHOW ); capture->VI.listDevices(); 

看到这个 StackOverflow答案。 它目前不被OpenCV支持,因为它是跨平台的,并且相机枚举是非常特定于平台的(例如,v412枚举与DirectShow不同)。 但是,有人在2.2版本中提交了增强请求 。