使用独特标识符识别 OpenCV 摄像头

4

我目前在Win 7上使用C++并使用三个摄像头,采用opencv2.4.8技术。我知道如何通过VideoCapture cap等方法从摄像头读取数据,但是我在识别哪个摄像头属于哪里方面遇到了麻烦。

据我所知,cap.open(int num)接收摄像头索引。在我的情况下,它们分别是0, 1 和 2.

    CAMA = 0 
    CAMB = 1 
    CAMC = 2

如果在程序启动之前,摄像头索引0变为未插入状态,那么我的摄像头索引将会改变。
    CAMA //GONE
    CAMB = 0
    CAMC = 1

是否有办法“记住”每个相机是哪个(而不是每次都向用户显示每个相机)?也许记录相机的某个唯一标识,然后在重新启动时读取该标识?

在设备管理器中,我看到USB设备 - 设备类guid的属性,它似乎是一个相对持久的值。有没有办法将此ID与摄像机索引相关联?

我已经在这里这里的代码进行了搜索。我想立体视觉用户通常会遇到这个问题,那么人们是如何解决这个问题的呢?


"那人们是如何处理这个的?" 在开始时有一个配置对话框,询问正确的顺序/永不触碰它。 - Sebastian Schmitz
1个回答

3

这并不是一个确切的答案,但我认为也没有确切的答案。

在处理生产应用程序时,我会完全在OpenCV之外处理视频,并将帧转换为OpenCV图像以进行进一步处理。

在Windows上,您可以使用DirectShow,我也使用了特定于相机的API。虽然不便携或方便,但好处是可以正常工作。另外,您通常可以访问相机的全部设置和功能,而不仅仅是OpenCV定义的几个属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接