zoukankan      html  css  js  c++  java
  • opencv 图像resize

    这是文档中的函数原型

    cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])

    参数说明
    src:要resize的原图,应该是一个矩阵

    dsize:希望得到图像的shape,是一个tuple类型的数据,注意,这里是宽*高,而我们平常img.shpae得到都是高*宽

    fx,fy 一般不会用到,所以我没有去研究

    interpolation: 插值方法(详见下表,参考https://blog.csdn.net/JNingWei/article/details/78218837)

    INTER_NEAREST    	最近邻插值
    INTER_LINEAR   	 双线性插值(默认设置)
    INTER_AREA  	 使用像素区域关系进行重采样。 它可能是图像抽取的首选方法,因为它会产生无云纹理的结果。 但是当图像缩放时,它类似于INTER_NEAREST方法。
    INTER_CUBIC	 4x4像素邻域的双三次插值
    INTER_LANCZOS4	8x8像素邻域的Lanczos插值
    

      


    代码示例:

    import cv2
    pic = cv2.imread('test.jpg')
    pic = cv2.resize(pic, (64, 129), interpolation=cv2.INTER_LINEAR)
    

      

    另外,一个小tips ,opencv 的imread 读图读出来应该是 BGR 模式 如果需要保存应该转成 RGB,下面这句代码就可以了

    img = img [:,:,::-1]


    还有 注意 opencv 的resize 后矩阵的数据类型仍然应该是uint8,但是 在skimage.transform.resize() 里 返回的是 [0,1] 的矩阵,数据类型变味了 float 。

    跑模型时,经常会遇到自己数据的size和原模型的size不一致,这时候可能需要自己resize,但尤其要注意:

    原来imread读出来的矩阵的数据类型是uint8,而resize后的数据类型是float,这是(0,1)范围内的数,所以如果以后要转回uint8的话肯定会丢失精度,所以我的做法是:

    image = (resize(image, (128, 64)) * 255).astype(np.uint8)
    

      

    强转为uint8,这两天看的Mask-Rcnn 读入图片也是这么处理的。

    原文链接:https://blog.csdn.net/qq_37702890/article/details/97820312

  • 相关阅读:
    SQL语句中的GO
    别人如何使用JsUnit的
    类,子类,继承,virtual, abstract, override
    尝到JsUnit自动测试的甜头
    A class file was not written. The project may be inconsistent, if so try refreshing this project and building it. eclipse提示错误
    正则表达式收集
    jquery 无限级下拉菜单
    javascript学习笔记,绝对值,倒计时,按数字计算
    java 常识
    jquery ajax 从后台获取数据时 firefox控制台显示未组织好错误
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/11957517.html
Copyright © 2011-2022 走看看