opencv-resize()-重新设置图像大小操作


函数功能:缩小或者放大函数至某一个大小

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM