函数功能:缩小或者放大函数至某一个大小
1 void resize( InputArray src, OutputArray dst, 2 Size dsize, double fx = 0, double fy = 0, 3 int interpolation = INTER_LINEAR );
参数列表:
src:输入,原图像,即待改变大小的图像
dst:输出,改变大小之后的图像,这个图象和原图像具有相同的内容,只是大小和原图像不一样
dsize:输出图像的大小。
如果此数值不为0,那么就代表将图像缩放到Size(width,height)指定大小;
如果为0,原图像就通过下面的公式来计算:
dsize = Size(round(fx*src.cols),round(fy*src.rows))
fx:width方向的缩放比例,如果它是0,那么它就会按照(double)dsize.width / src.cols来计算;
fy:height方向的缩放比例,如果它是0,那么它就会按照(double)dsize.height / src.rows来计算;
interpolation:这个是指插值的方式,图像缩放后,要对像素重新计算,就靠这个参数来指定重新计算像素的方式,有以下几种:
INTER_NEAREST - 最邻近插值
INTER_LINEAR - 双线性插值,如果最后一个参数你不指定,默认使用这种方法
INTER_AREA
INTER_CUBIC - 4x4像素领域内的双立方插值
INTER_LANCZOS4 - 8x8像素邻域内的Lanczos插值
几种常用方法的效率是:最邻近插值 > 双线性插值 > 双立方插值 > Lanczons插值;
效率和效果成反比
1 int w = image.cols;//列 2 int h = image.rows;//行 3 4 Mat dst(w,h,image.type()); 5 6 resize(image, dst, Size(w / 2, h / 2),0,0,INTER_LINEAR); 7 //resize(image,dst,Size(0,0),0.5,0.5,INTER_LINEAR); 8 9 imshow("重新定义图像的大小", dst);
参考:https://www.jianshu.com/p/11879a49d1a0