python: scipy.misc.imresize:先裁剪成矩形,再调整图片大小并归一化

img = cv2.imread(img_path,cv2.IMREAD_COLOR)

def resize(self, img, height, width, centerCrop=True, interp='bilinear'):
        imgh, imgw = img.shape[0:2]
        if centerCrop and imgh != imgw:
            # center crop
            side = np.minimum(imgh, imgw)
            j = (imgh - side) // 2
            i = (imgw - side) // 2
            img = img[j:j + side, i:i + side, ...]
        # 改变图像大小并且隐藏归一化到0-255区间的操作
        img = scipy.misc.imresize(img, [height, width], interp=interp)
        return img

在这里插入图片描述

scipy.misc.imresize( arr, size, interp=‘bilinear’, mode=None)
改变图像大小并且隐藏归一化到0-255区间的操作

参数:

  • arr: ndarray, the array of image to be resized

  • size: 只对原图的第0和第1维度(h*w)的size做改变,其他维度的size保持不变。

     1) int, percentage(百分比) of current size. 
     整数的时候是原图像的百分比,例如7,80,160分别是原图像的百分之七,百分之八十,百分之一百六十的大小
     
     2)float, fraction(分数) of current size. 
     浮点数的时候是原图像的分数,例如0.7,1.5分别是原图像的0.7倍和1.5倍
    
     3)tupe, size of the output image (height,width).
     元组的时候是直接定义输出图像的长和宽,与原图的大小无关
    
  • interp: str, optional. interpolation(插值) to use for re-sizing
    (‘nearest’, ‘lanczos’, ‘bilinear’, ‘bicubic’, ‘cubic’)。是一个可选的参数,是调整图像大小所用的插值的方法,分别有最近邻差值,Lanczos采样放缩插值,双线性插值,双三次插值,三次插值

  • mode: str, optional.

以下讨论都是基于size=1.0或者size=100也就是说不改变原图像的大小的情况下。如果size不是和原图大小一样,那么先进行mode变化,再利用插值方法对size进行变化。

(1) 当arr是二维的时候arr=[h,w],mode可以选择’P’,‘L’,None:mode='L’和mode=None的结果是一样的,都是直接将原图归一化到0-255范围内(归一化的方法在下面),结果shape=[h,w];mode='P’的时候是将mode='L’的结果是将只有一个图层的二维图像变为3维图像,具体做法是三个图层是一样的,结果shape=[h,w,3]。

(2) 当arr是三维的时候arr.shape=[h,w,c],必须满足一个条件,就是至少一个维度是3,mode可以选择‘RGB’, None实际上这两个选择结果是一样的;
a. 当c=3时,结果shape=[h,w,3],
b. 当c不等于3同时只有一个3的时候,shape的变化如下 [h,3,c]------[h,c,3],[3,w,c]-----[w,c,3],
c.当c不等于3同时h=w=3的时候,shape变化如下[3,3,c]-------[3,c,3].
(3)当arr是四维的时候:mode='RGBA’或者None,略(日后补充)

  • 返回值: imresize: ndarray, the resized array of image

归一化的方法:

x先归一化到0-1区间得y1,再扩充到0-255区间(y2=y1*255)

imresize的进行大小改变之前要对原来的数据归一化成0-255区间的大小,对数据的shape不进行更改。在原来的数据中找到最大值max和最小值min,求得极值m,归一化操作y=(x-min)/m,这样就将x归一化到0-1区间,最后归一化0-255区间y*255.

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码小白的成长

计算机网络PPT下载

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值