使用OpenCV将2个摄像头显示到一个窗口中

时间:2018-01-27 06:05:20

标签: c++ opencv

我正在尝试使用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;
}

提前致谢!

2 个答案:

答案 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之外的其他内容显示它们,否则必须将它们合并为一个图像。

Merging cv::Mat horizontally