C++ 在openCV中使用两个视频捕获来捕获同一设备
如果我使用C++ 在openCV中使用两个视频捕获来捕获同一设备,c++,opencv,C++,Opencv,如果我使用VideoCapture从同一设备获取图像,如下所示: VideoCapture cap1,cap2; cap1.open(0); cap2.open(0); Mat image1,image2; cap1 >> image1; cap2 >> image2; image1和image2是否相同?您不能同时在两个不同的VideoCapture上打开相同的设备 选中此项: VideoCapture cap1,cap
VideoCapture
从同一设备获取图像,如下所示:
VideoCapture cap1,cap2;
cap1.open(0);
cap2.open(0);
Mat image1,image2;
cap1 >> image1;
cap2 >> image2;
image1
和image2
是否相同?您不能同时在两个不同的VideoCapture
上打开相同的设备
选中此项:
VideoCapture cap1,cap2;
cap1.open(0);
if (!cap1.isOpened()) {
cerr << "ERROR! Unable to open camera 0 on cap1\n";
}
cap2.open(0);
if (!cap2.isOpened()) {
cerr << "ERROR! Unable to open camera 0 on cap2\n";
}
视频捕获cap1、cap2;
cap1.开放(0);
如果(!cap1.isOpened()){
cerr你确定吗?我试过了,但没有出现错误。我使用openCV 3.0。@user7857293你有没有像我的例子中那样检查Ispened
?@user7857293你真幸运,在同一台设备上打开2VideoCapture
就像把同一栋房子卖给两个不同的人……可能取决于设备的驱动程序。为什么不直接测试一下呢?使用cb::absdiff在两幅图像上显示,然后测试是否有任何像素不是cv::Vec3b(0,0,0),那么帧就不一样了。@Mika我需要扫描垫子来测试是否有任何像素不是cv::Vec3b(0,0,0)?您可以使用cv::inRange,而不是从(1,1,1)到(255255255)并在生成的遮罩上显示Countnon0,但您可能会错过最小的更改(0,0,1),(0,1,0),(1,0,0);@Mika嗯,我扫描了它,它不是所有像素的Vec3b(0,0,0)。我认为图像在流中可能是交替的。@Mika谢谢你的回答。