C++判断图像A宽高与图像B宽高是否相同,如果相同将图像A拷贝给图像B,如果不同将图像Bresize为与图像A相同的宽高
时间: 2024-03-20 10:44:26 浏览: 53
可以使用OpenCV库来实现这个功能。具体的实现流程如下:
1. 使用OpenCV库中的`cv::imread`函数读取图像A和图像B,分别存储在`cv::Mat`类型的变量`imgA`和`imgB`中。
2. 使用`imgA.rows`和`imgA.cols`分别获取图像A的高度和宽度,使用`imgB.rows`和`imgB.cols`分别获取图像B的高度和宽度。
3. 判断图像A和图像B的宽高是否相同,可以使用条件语句实现。如果相同,则直接将图像A拷贝给图像B,可以使用`imgA.copyTo(imgB)`函数实现;如果不同,则需要将图像B resize为与图像A相同的宽高。可以使用`cv::resize`函数实现,具体的参数设置可以根据实际情况进行调整。
完整的代码如下:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 读取图像A和图像B
Mat imgA = imread("path_to_image_A");
Mat imgB = imread("path_to_image_B");
// 获取图像A和图像B的宽高
int rowsA = imgA.rows;
int colsA = imgA.cols;
int rowsB = imgB.rows;
int colsB = imgB.cols;
// 判断宽高是否相同
if (rowsA == rowsB && colsA == colsB)
{
// 如果相同,直接拷贝图像A到图像B
imgA.copyTo(imgB);
}
else
{
// 如果不同,将图像B resize为与图像A相同的宽高
resize(imgB, imgB, Size(colsA, rowsA));
}
return 0;
}
```
注意,为了让程序更加健壮,还需要添加一些异常处理的代码,例如判断读取的图像是否为空等。
阅读全文