我正在尝试使用openCV / c ++在一个窗口中显示2个摄像头。
以下代码打开两个摄像头窗口。我怎样才能将它们组合在一起?
#include <opencv2/opencv.hpp>
int main()
{
//initialize and allocate memory to load the video stream from camera
cv::VideoCapture camera0(0);
cv::VideoCapture camera1(1);
if( !camera0.isOpened() ) return 1;
if( !camera1.isOpened() ) return 1;
while(true) {
//grab and retrieve each frames of the video sequentially
cv::Mat3b frame0;
camera0 >> frame0;
cv::Mat3b frame1;
camera1 >> frame1;
cv::imshow("Video0", frame0);
cv::imshow("Video1", frame1);
//wait for 40 milliseconds
int c = cvWaitKey(40);
//exit the loop if user press "Esc" key (ASCII value of "Esc" is 27)
if(27 == char(c)) break;
}
return 0;
}
提前致谢!
答案 0 :(得分:3)
您可以执行以下操作:
步骤1:调整两个帧的大小以使其具有相同的大小
步骤2:将两个帧连接成一个
步骤3:输出(imshow)连接帧
假设两个帧的形状相同:
cv::Mat3b frame0;
camera0 >> frame0;
cv::Mat3b frame1;
camera1 >> frame1;
cv::Mat3b combine;
hconcat(frame0,frame1,combine);
cv::imshow("Videos0and1", combine);
希望这有帮助!
答案 1 :(得分:0)
除非使用OpenCV之外的其他内容显示它们,否则必须将它们合并为一个图像。