1、开启两个摄像头,系统默认从0开始查找,两个摄像头使用0和1就够啦,然后把显示窗口尺寸固定,这里用的是320和240 VideoCapture capture1(0); VideoCapture capture2(1); 2、创建一个黑色图片,大小刚好可以...

【一】原理

1、开启两个摄像头,系统默认从0开始查找,两个摄像头使用0和1就够啦,然后把显示窗口尺寸固定,这里用的是320和240
VideoCapture capture1(0); VideoCapture capture2(1);
2、创建一个黑色图片,大小刚好可以容纳两个摄像头窗口,width=640,height=240
Mat frame(240,640,CV_8UC3,Scalar(0,0,0));
3、创建ROI区域
ROIImage1 = frame(Rect(0,0,320,240)); ROIImage2 = frame(Rect(320, 0, 320, 240));
4、创建掩膜
掩膜必须是灰度图,因此先要把图片转化为灰度图
cvtColor(frame1, gray_Image1,CV_RGB2GRAY); cvtColor(frame2, gray_Image2, CV_RGB2GRAY);
然后把图片复制给掩膜
mask1 = gray_Image1;
mask2 = gray_Image2;
5、把掩膜复制到ROI区域,frame1为要覆盖的图片,意思就是把frame1复制ROI区域的掩膜上。
frame1.copyTo(ROIImage1, mask1); frame2.copyTo(ROIImage2, mask2);

【二】效果图

【三】源代码

#include#includeusing namespace cv; using namespace std; //【画框】 void Draw_rectangle(Mat img,Point pt1, Point pt2) {	rectangle(img, pt1, pt2, Scalar(0, 255, 0), 2, 8, 0); } int main() {	Mat frame1, frame2,ROIImage1, ROIImage2,mask1,mask2,gray_Image1, gray_Image2;	VideoCapture capture1(0);	VideoCapture capture2(1);	capture1.set(CV_CAP_PROP_FRAME_WIDTH, 320);	capture1.set(CV_CAP_PROP_FRAME_HEIGHT, 240);	capture2.set(CV_CAP_PROP_FRAME_WIDTH, 320);	capture2.set(CV_CAP_PROP_FRAME_HEIGHT, 240);	if (!capture1.isOpened())	{	cout