• 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

  • 相关阅读:
    iostream与iostream.h的区别
    [HAOI2011]向量
    [POI2011]Temperature
    [洛谷2839/国家集训队]middle
    [TJOI2013]松鼠聚会
    [HNOI2015]接水果
    [BZOJ3772]精神污染
    [BZOJ3251]树上三角形
    [ZJOI2011]道馆之战
    [SDOI2013]森林
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/11957517.html
Copyright © 2020-2023  润新知