环境为: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.使用的三个摄像头不能为同一种型号,否则会产生异常中断,不能正确打开摄像头。