函数介绍
c++ opencv中的resize函数用于调整图像的大小。它可以根据指定的尺寸和插值方法对图像进行缩放。函数原型如下:
void cv::resize(inputarray src, outputarray dst, size size, double fx = 0, double fy = 0, int interpolation = inter_linear);
参数说明:
src
:输入图像,通常为cv::mat
类型。dst
:输出图像,与输入图像具有相同的类型。size
:目标图像的尺寸,表示为(width, height)
。fx
:沿水平轴的缩放因子,默认为0,表示不进行水平缩放。fy
:沿垂直轴的缩放因子,默认为0,表示不进行垂直缩放。interpolation
:插值方法,有以下几种可选:cv::inter_nearest
:最近邻插值,速度最快,但质量最差。cv::inter_linear
:线性插值,速度较快,质量较好。cv::inter_area
:区域插值,适用于图像缩小,速度较慢,质量最好。cv::inter_cubic
:三次样条插值,速度适中,质量较好。cv::inter_lanczos4
:lanczos插值,速度适中,质量较好。
使用案例
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
// 读取原始图像
mat src = imread("./3480e7ce_mk_tk_a_c2_6400_4480.png", imread_grayscale);
if (src.empty())
{
cout << "无法读取图像" << endl;
return -1;
}
imshow("src", src);
waitkey(0);
// 放大2倍
mat dst;
resize(src, dst, size(src.cols * 2, src.rows * 2), 0, 0, inter_linear);
imshow("2x inter_linear", dst);
waitkey(0);
// 缩小2倍
resize(src, dst, size(), 0.5, 0.5, inter_lanczos4);
imshow("0.5x inter_lanczos4", dst);
waitkey(0);
return 0;
}
总结
c++ opencv中的resize函数是一个非常实用的图像处理函数,它可以帮助我们轻松地对图像进行缩放操作。通过调整插值方法,我们可以获得不同质量和速度的缩放结果。在实际应用中,resize函数可以与其他图像处理函数结合使用,完成各种复杂的图像处理任务。
发表评论