C++ opencv图片尺寸调整
时间: 2024-09-10 21:01:32 浏览: 36
在C++中使用OpenCV处理图像时,如果需要调整图片的尺寸,通常会涉及到`cv::resize()`函数。这个函数的基本语法如下:
```cpp
cv::Mat resizedImage = cv::imread("original_image.jpg");
cv::resize(resizedImage, resizedImage, Size(new_width, new_height), interpolation_method);
```
这里,`cv::imread()`用于读取原始图片,`Size(new_width, new_height)`指定了新的宽度和高度,`interpolation_method`是一个选项,用于指定插值算法,常见的有:
- `cv::INTER_NEAREST`(最近邻插值),像素点不会平滑过渡,适合较小的缩放比例;
- `cv::INTER_LINEAR`(双线性插值),像素点通过线性组合得到,适用于一般情况;
- `cv::INTER_CUBIC`(立方卷积插值)或 `cv::INTER_AREA`(面积覆盖法),更平滑,但计算量较大,适用于较大的缩放。
如果你想要保持长宽比不变并只改变大小的一边,可以传递一个包含两个元素的`Size`对象,并设置另一个元素为0,例如:
```cpp
cv::resize(image, image, cv::Size(0, 0), cv::INTER_AREA, 0, Size(0, 0), border_type);
```
在这个例子中,`cv::INTER_AREA`保持了原始图像的比例,而`border_type`决定了边缘填充的方式。