Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在一台摄像机上进行多个视频捕获_C++_Opencv_Video Capture - Fatal编程技术网

C++ 在一台摄像机上进行多个视频捕获

C++ 在一台摄像机上进行多个视频捕获,c++,opencv,video-capture,C++,Opencv,Video Capture,我可能有一个以上的摄像机拍摄。不幸的是,有时与摄像机的连接似乎被终止 例如: 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); //

我可能有一个以上的摄像机拍摄。不幸的是,有时与摄像机的连接似乎被终止

例如:

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);
    }
}
见评论:


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

您能否尝试解释一下,为什么您希望在第一个位置为同一设备进行两次单独的捕获?这似乎很奇怪。我在调试某些输入/输出以保存某些类的状态时偶然发现了这一点。在那里,我有VideoCaptureVector,并按照
VideoCaptureVector[0]=VideoCapture[0]
的思路做了一些事情,尽管
VideoCaptureVector[0]
已经有一个到设备0的开放链接。你为什么要这样做?一旦可以将映像复制到另一个位置并拥有所需数量的副本,就没有理由这样做。每个设备只能有一个打开的句柄。我想不出为什么你需要为同一台设备提供两个视频捕获对象,只需复制一份mat@JamesBarnett:我可以让v1和v2都访问设备0。原因是调试。因为VideoCapture甚至有一个
refcount
,我假设它会使用这个。。。