2014-06-12 172 views
4

我目前在C++中使用Win35上的三台摄像机的opencv2.4.8。我知道如何通过VideoCapture cap等从相机读取,但我无法识别哪个相机是哪个。唯一识别OpenCV相机

从我所能理解的,cap.open(int num)摄入相机索引。就我而言,这些都是0,1,2 &

CAMA = 0 
    CAMB = 1 
    CAMC = 2 

但是,如果启动程序前,凸轮索引0变成拔掉,我的相机指标的变化。

CAMA //GONE 
    CAMB = 0 
    CAMC = 1 

那么,有没有一些方法来记住这相机是(不是每一次显示每个摄像机的用户...等)?也许记录一些可以在重新启动时读入的相机的唯一ID?

在设备管理器中,我看到USB device - Device Class guid的属性,这似乎是一个有点持久的价值。有没有办法将这个ID与凸轮索引相关联?

我搜索了heretried the code here.我想象立体视觉用户经常遇到这个问题,那么人们如何管理这个问题呢?

+0

“那么人们怎么管理这个?”在开始时有一个配置对话框,询问正确的顺序/不要触摸它。 –

回答

3

不是一个真正的答案,但后来我认为并没有真正的答案。

我为制作应用程序所做的工作是完全在OpenCV之外完成视频处理,然后将帧转换为OpenCV图像并进行进一步处理。

在Windows上,您可以使用DirectShow,并且我也使用了相机特定的API。不以任何方式便携或方便,但它有工作的好处。另一方面,您通常可以访问全套相机设置和功能,而不仅仅是OpenCV定义的几个属性。