用OpenCV实现创建一个新的图像并排显示左右两个输入图像

文章目录

创建一个并排显示左右两个输入图像程序的关键在于正确地使用 OpenCV 的 cv::Mat 类和图像处理函数。
下面是一个简单的示例代码,展示了如何实现这个功能。
这段代码假设你已经有了两个图像文件(左图和右图),并将它们并排显示在一个窗口中。

请确保在您的系统上安装了 OpenCV 库来编译和运行此代码。

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
    // 加载左右两个图像
    Mat imgLeft = imread("left_image.jpg", IMREAD_COLOR);
    Mat imgRight = imread("right_image.jpg", IMREAD_COLOR);

    if (imgLeft.empty() || imgRight.empty())
    {
        cout << "Error loading images!" << endl;
        return -1;
    }

    // 创建一个新的图像,宽度为两个图像宽度之和,高度为两者之间的最大值
    Mat combinedImage(max(imgLeft.rows, imgRight.rows), imgLeft.cols + imgRight.cols, imgLeft.type());

    // 将左图复制到新图像的左侧
    Mat left(combinedImage, Rect(0, 0, imgLeft.cols, imgLeft.rows));
    imgLeft.copyTo(left);

    // 将右图复制到新图像的右侧
    Mat right(combinedImage, Rect(imgLeft.cols, 0, imgRight.cols, imgRight.rows));
    imgRight.copyTo(right);

    // 显示合并后的图像
    namedWindow("Combined Image", WINDOW_AUTOSIZE);
    imshow("Combined Image", combinedImage);

    // 等待按键,按下任意键关闭窗口
    waitKey(0);

    return 0;
}

这段代码完成以下任务:

  1. 使用 OpenCV 的 imread 函数加载左右两个图像。
  2. 检查图像是否成功加载。
  3. 创建一个新的 cv::Mat 对象 combinedImage,其大小能够并排容纳两个图像。
  4. 使用 cv::Mat 的构造函数创建两个子区域 leftright,分别对应于 combinedImage 中的左侧和右侧部分。
  5. 使用 copyTo 函数将左右图像分别复制到这两个子区域。
  6. 使用 imshow 函数显示合并后的图像。
  7. 程序等待用户按键后退出。

请将 "left_image.jpg""right_image.jpg" 替换为您实际图像文件的路径。

find_package(OpenCV QUIET)
编译和运行此代码需要链接 OpenCV 库。