文章目录
创建一个并排显示左右两个输入图像程序的关键在于正确地使用 OpenCV 的
下面是一个简单的示例代码,展示了如何实现这个功能。
这段代码假设你已经有了两个图像文件(左图和右图),并将它们并排显示在一个窗口中。
请确保在您的系统上安装了 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; }
这段代码完成以下任务:
- 使用 OpenCV 的
imread 函数加载左右两个图像。 - 检查图像是否成功加载。
- 创建一个新的
cv::Mat 对象combinedImage ,其大小能够并排容纳两个图像。 - 使用
cv::Mat 的构造函数创建两个子区域left 和right ,分别对应于combinedImage 中的左侧和右侧部分。 - 使用
copyTo 函数将左右图像分别复制到这两个子区域。 - 使用
imshow 函数显示合并后的图像。 - 程序等待用户按键后退出。
请将
find_package(OpenCV QUIET) 编译和运行此代码需要链接 OpenCV 库。