本文主要是介绍OpenCV几何图像变换(8)调整图像大小的函数resize()的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
resize 函数调整图像 src 的大小,使其缩小或放大至指定的大小。需要注意的是,初始的 dst 类型或大小不被考虑。相反,大小和类型是从 src, dsize, fx, 和 fy 推导出来的。如果你想调整 src 的大小,使其适合预创建的 dst,你可以按照以下方式调用函数:
// 明确指定 dsize = dst.size(); fx 和 fy 将从该值计算得出。
resize(src, dst, dst.size(), 0, 0, interpolation);
如果你想要在每个方向上将图像缩小一半,你可以按照以下方式调用函数:
// 指定 fx 和 fy,并让函数计算出目标图像的大小。
resize(src, dst, Size(), 0.5, 0.5, interpolation);
为了缩小图像,通常使用 INTER_AREA 插值方法会看起来最好,而为了放大图像,通常使用 INTER_CUBIC(较慢)或 INTER_LINEAR(较快但仍看起来不错)插值方法会看起来最好。
函数原型
void cv::resize
(InputArray src,OutputArray dst,Size dsize,double fx = 0,double fy = 0,int interpolation = INTER_LINEAR
)
参数
- 参数 src 输入图像。
- 参数dst 输出图像;它具有 dsize(当非零时)的大小或从 src.size(), fx, 和 fy 计算出的大小;dst 的类型与 src 相同。
- 参数dsize 输出图像的大小;如果它等于零(在Python中为 None),则计算为: dsize = Size(round(fx*src.cols), round(fy*src.rows)) \texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))} dsize = Size(round(fx*src.cols), round(fy*src.rows))或者 fx 和 fy 必须是非零的。
- 参数fx 沿水平轴的缩放比例;当它等于0时,计算为 (double)dsize.width/src.cols \texttt{(double)dsize.width/src.cols} (double)dsize.width/src.cols
- 参数fy 沿垂直轴的缩放比例;当它等于0时,计算为 (double)dsize.height/src.rows \texttt{(double)dsize.height/src.rows} (double)dsize.height/src.rows。
- 参数interpolation 插值方法,参见 InterpolationFlags。
代码示例
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>using namespace cv;int main(int argc, char** argv)
{// 读取图像Mat image = imread("/media/dingxin/data/study/OpenCV/sources/images/fruit_small.jpg", IMREAD_COLOR);if (image.empty()) {std::cerr << "Error: Could not open or find the image." << std::endl;return -1;}// 设置输出图像的大小Size dsize(300, 300); // 输出图像的宽度和高度// 创建输出图像Mat resizedImage;// 调整图像大小resize(image, resizedImage, dsize, 0, 0, INTER_LINEAR);// 显示结果namedWindow("Original Image", WINDOW_NORMAL);imshow("Original Image", image);namedWindow("Resized Image", WINDOW_NORMAL);imshow("Resized Image", resizedImage);waitKey(0);return 0;
}
运行结果
这篇关于OpenCV几何图像变换(8)调整图像大小的函数resize()的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!