创建一个并排显示左右两个输入图像程序的关键在于正确地使用 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;
}
这段代码完成以下任务:
imread
函数加载左右两个图像。cv::Mat
对象 combinedImage
,其大小能够并排容纳两个图像。cv::Mat
的构造函数创建两个子区域 left
和 right
,分别对应于 combinedImage
中的左侧和右侧部分。copyTo
函数将左右图像分别复制到这两个子区域。imshow
函数显示合并后的图像。请将 "left_image.jpg"
和 "right_image.jpg"
替换为您实际图像文件的路径。
find_package(OpenCV QUIET)
编译和运行此代码需要链接 OpenCV 库。