• opencv图像放缩与插值-resize函数


    OpenCV中,resize函数用于对图像进行尺寸调整(放大或缩小),这个过程中通常需要用到插值方法来计算新尺寸下图像像素的值。插值方法对于放缩的质量有着直接影响。

    void resize(InputArray src, OutputArray dst, Size dsize, double fx = 0, double fy = 0, int interpolation = INTER_LINEAR);
    
    • 1

    src:输入图像。
    dst:输出图像。尺寸由dsize指定,或者通过fx和fy与源图像的相对关系确定。
    dsize:输出图像的尺寸。如果为零,则通过fx和fy计算得出。
    fx和fy:沿x轴和y轴的比例因子。如果dsize非零,则这两个参数被忽略。
    interpolation:插值方法。OpenCV提供了多种插值方法,常用的包括INTER_LINEARINTER_NEARESTINTER_AREA等。

    插值方法

    INTER_NEAREST:最近邻插值,速度最快,但质量最低,适用于图像缩小。
    INTER_LINEAR:双线性插值,速度和质量之间的折中选择,适用于图像放大和缩小,是默认方法。
    INTER_AREA:区域插值,适用于图像缩小,优于INTER_NEAREST,在缩小图像时推荐使用。
    INTER_CUBIC:三次插值,质量比INTER_LINEAR更好,但速度更慢,适用于图像放大。
    INTER_LANCZOS4:Lanczos插值,使用4x4邻域,提供高质量的结果,适用于图像放大和缩小,但速度最慢。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注:在实际应用中,应该根据具体需求选择合适的插值方法。例如,对于图像缩小,INTER_AREA提供了较好的结果;而对于图像放大,INTER_CUBIC或INTER_LANCZOS4可能更适合。

    例子

    void QuickDemo::resize_demo(Mat &image) {
    	Mat zoomin, zoomout;
    	int h = image.rows;
    	int  w = image.cols;
    	resize(image, zoomin, Size(w / 2, h / 2), 0, 0, INTER_LINEAR);//图像放缩与插值
    	imshow("zoomin", zoomin);
    	resize(image, zoomout, Size(w*1.5, h *1.5), 0, 0, INTER_LINEAR);//图像放缩与插值
    	imshow("zoomout", zoomout);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

  • 相关阅读:
    opencv
    3分钟基于Chat GPT完成工作中的小程序
    AJAX——HttpRequest对象、get/post请求
    测试开发环境下centos7.9下安装docker的minio
    【iOS】——SDWebImage源码学习
    CMake继续学习
    Anaconda虚拟环境配置Python库与Spyder编译器
    【考研词汇训练营】Day 14 —— panini,predict,access,apologize,sense,transport,aggregation
    Python和Pycharm安装教程
    11. Junit
  • 原文地址:https://blog.csdn.net/xiaofeixia002X/article/details/136219809