c++组合窗口打开4个摄像头
时间: 2023-09-17 09:09:52 浏览: 31
可以使用 OpenCV 库来打开 4 个摄像头并在组合窗口中显示。以下是一个简单的示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
VideoCapture cap1(0);
VideoCapture cap2(1);
VideoCapture cap3(2);
VideoCapture cap4(3);
if (!cap1.isOpened() || !cap2.isOpened() || !cap3.isOpened() || !cap4.isOpened()) {
cerr << "Error: Unable to open cameras" << endl;
return -1;
}
Mat frame1, frame2, frame3, frame4;
namedWindow("Cameras", WINDOW_NORMAL);
resizeWindow("Cameras", 1280, 720);
while (true) {
cap1 >> frame1;
cap2 >> frame2;
cap3 >> frame3;
cap4 >> frame4;
if (frame1.empty() || frame2.empty() || frame3.empty() || frame4.empty()) {
cerr << "Error: Unable to capture frame" << endl;
break;
}
Mat combined_frame;
hconcat(frame1, frame2, combined_frame);
hconcat(combined_frame, frame3, combined_frame);
hconcat(combined_frame, frame4, combined_frame);
imshow("Cameras", combined_frame);
if (waitKey(30) == 27) {
break;
}
}
cap1.release();
cap2.release();
cap3.release();
cap4.release();
destroyAllWindows();
return 0;
}
```
这段代码使用了四个 VideoCapture 对象来打开四个摄像头,并在 while 循环中读取每个摄像头的帧。然后使用 hconcat 函数将四个帧水平连接到一个 Mat 对象中,并在名为 "Cameras" 的窗口中显示组合帧。请注意,我们在此示例中使用了 namedWindow 和 resizeWindow 函数来调整窗口的大小。
在这个示例中,我们将四个摄像头水平排列在一起。如果需要不同的布局,可以使用不同的 OpenCV 函数来组合帧。