环境为:win7 64位旗舰版+VS2012+opencv3.0.0beta
首先,利用opencv同时打开3个摄像头,程序如下:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char* argv[])
{
VideoCapture cap1;
VideoCapture cap2;
VideoCapture cap3;
cap3.open(2);
cap2.open(1);
cap1.open(0);
if(!cap1.isOpened())
{
return -1;
}
if(!cap2.isOpened())
{
return -2;
}
if(!cap3.isOpened())
{
return -3;
}
double w = 320, h = 240;
cap1.set(CAP_PROP_FRAME_WIDTH,w);//设置显示界面的宽高
cap1.set(CAP_PROP_FRAME_HEIGHT,h);
cap2.set(CAP_PROP_FRAME_WIDTH,w);
cap2.set(CAP_PROP_FRAME_HEIGHT,h);
cap3.set(CAP_PROP_FRAME_WIDTH,w);
cap3.set(CAP_PROP_FRAME_HEIGHT,h);
Mat frame1,frame2,frame3;
bool stop = false;
namedWindow("Video1");
namedWindow("Video2");
namedWindow("Video3");
while(!stop)
{
cap1>>frame1;
imshow("Video1",frame1);
cap2>>frame2;
imshow("Video2",frame2);
cap3>>frame3;
imshow("Video3",frame3);
if(waitKey(30) >=0)
stop = true;
}
return 0;
}
以上程序效果如下:
经过自己调试,发现需要注意的是:
1.
cap3.open(2);
cap2.open(1);
cap1.open(0);
以上三句顺序不能随意排,摄像头调用需要从高到底排序,否则,摄像头不能打开。
2.使用的三个摄像头不能为同一种型号,否则会产生异常中断,不能正确打开摄像头。
当用上面的程序再添加第四个摄像头时,由于手上有2个同一型号的摄像头,所以程序运行总是错误,可能换一个摄像头,使4个摄像头都是不同型号的,那可能就可以了吧。。