OpenCV VideoCapture设备索引/设备号

Ela*_*oni 6 c++ python windows usb opencv

我有一个 python 环境(在 Windows 10 上),它使用 OpenCVVideoCapture类连接到多个 USB 摄像头。

据我所知,除了类构造函数/方法device中的参数之外,没有其他方法可以识别 OpenCV 中的特定相机。VideoCaptureopen

问题是设备参数会根据实际连接的摄像头数量和 USB 端口而变化。

我希望能够识别特定的相机并找到其“设备索引”或“相机索引”,无论连接了多少个相机以及连接到哪个 USB 端口。

有人可以建议一种实现该功能的方法吗?python 代码更好,但 C++ 也可以。

Par*_*ark 3

据我所知,openCV枚举设备并使用它的索引作为相机索引。但它的枚举方式在后端之间可能有所不同。不管怎样,如果你可以像 OpenCV 那样枚举设备,你就可以根据你的代码匹配设备的索引及其信息。

因此,在Windows环境中,您可以使用MSMF或DSHOW作为后端。如果您使用 MSMF 作为后端,我创建了一个简单的函数来列出设备并将其名称与其索引进行匹配。这里: https: //github.com/pvys/CV-camera-finder

如果您使用 DSHOW 作为背景,这里有一篇不错的文章:https ://www.codeproject.com/Articles/1274094/Capturing-Images-from-Camera-using-Python-and-Dire