2014-03-07 90 views
0

我可能有多个VideoCapture摄像机。不幸的是,有时与相机的连接似乎终止。一台摄像机上有多个VideoCapture

例子:

Mat img; 
VideoCapture v1(0); 
v1.read(img);  //img is a valid picture 
VideoCapture v2(0); 
v1.read(img);  //img is a valid picture 
v2.read(img);  //img is a valid picture 
v2 = v1; 
v2.read(img);  //img is not a valid picture. Connection seems to be closed 

这是正确的行为,或者是在OpenCV中的错误吗?

有没有办法来检查一个特定的devicenumber是否已经打开并获得负责任的类?

伪代码:

Mat img; 
VideoCapture v1(0); 
VideoCapture v2 = alreadyOpen(0); 

alreadyOpen(0){ 
    if(VideoCapture(0).isOpen()){ //how do i check that 
     return "v1"    //how do i know where v1 is 
    }else{ 
     return VideoCapture(0); 
    } 
} 
+1

你可以试着解释一下,为什么你想要在同一个设备上获得2次单独捕获?这似乎很奇怪。 – berak

+0

当我调试一些输入/输出以保存某些类的状态时,我偶然发现了这一点。虽然'VideoCaptureVector [0]'已经有一个打开的链接到设备0,我有VideoCaptureVector并且做了一些'VideoCaptureVector [0] = VideoCapture [0]'的行。 –

+0

你为什么要这样做?一旦您可以将图像复制到其他位置并拥有尽可能多的副本,就没有理由这样做。 –

回答

0

看评论:

这是不可能的,这可能是一个错误/尚不清楚,如果OpenCV的行为是故意的。