使用 image1.create(image2.size(), image2.type());后image1原图像无法正常显示,如何显示
时间: 2023-11-24 12:06:40 浏览: 83
详解canvas drawImage()方法绘制图片不显示的问题
5星 · 资源好评率100%
如果在调用 `image1.create(image2.size(), image2.type());` 后,image1 的原图像无法正常显示,可能是因为该函数创建了一个新的空图像,而没有将原图像的数据复制到新图像中。
为了正确显示图像,您可以使用 `cv::Mat::copyTo()` 函数将原图像的数据复制到新创建的图像中。以下是修改后的示例代码:
```cpp
#include <opencv2/opencv.hpp>
int main() {
// 读取两张图像
cv::Mat image1 = cv::imread("image1.jpg");
cv::Mat image2 = cv::imread("image2.jpg");
// 调整图像1的大小与图像2一致
if (image1.size() != image2.size() || image1.type() != image2.type()) {
image1.create(image2.size(), image2.type());
image2.copyTo(image1);
}
// 创建一个窗口,并设置窗口名称
cv::namedWindow("Images", cv::WINDOW_NORMAL);
// 在窗口中显示图像
cv::Mat combinedImage;
cv::hconcat(image1, image2, combinedImage);
cv::imshow("Images", combinedImage);
// 等待用户按下任意键后关闭窗口
cv::waitKey(0);
// 关闭窗口
cv::destroyAllWindows();
return 0;
}
```
在上述代码中,我们添加了一行 `image2.copyTo(image1);`,该行代码将图像2的数据复制到图像1中。这样,新创建的图像1将包含原图像的数据,并且可以正常显示。
请确保将"image1.jpg"和"image2.jpg"替换为您要处理的实际图像文件路径。
阅读全文