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

Phi*_*ent 13 c++ windows opencv

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

我的问题是似乎没有listdevices()函数来返回所有可用的视频源.

有人知道新的等价物吗?

App*_*234 10

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

查看相关视频输入似乎是在OpenCV更改日志指定的highgui中.虽然你的OpenCV是否是在启用它的情况下构建的,但是Cmake中的一个可配置选项(选项是WITH_VIDEOINPUT并且还要求它是WIN32版本,请参见此处).

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

您可以使用获取访问列表设备功能

 CvCapture* capture = cvCaptureFromCAM( CV_CAP_DSHOW );
 capture->VI.listDevices();
Run Code Online (Sandbox Code Playgroud)

  • 启用VI的CMAKE选项是什么?你能解释一下吗?我看了你的示例代码片段.它说VI不是一个有效的对象. (4认同)

mev*_*ron 3

请参阅StackOverflow 答案。目前 OpenCV 不支持它,因为它是跨平台的,并且相机枚举非常特定于平台(例如,v4l2 枚举与 DirectShow 不同)。但是,不久前有人提交了针对 2.2 版本的增强请求。