zoukankan      html  css  js  c++  java
  • Python opencv resize图片并保存原有的图像比例

    参考链接:https://www.jianshu.com/p/3092835eab61

    现有的图像是高瘦高瘦的,所以直接resize成矩形不合适。改变了整个结构。
    所以采用的是先resize再padding的方式。
    1.resize图片,先计算最长边的resize的比例,然后按照该比例resize。
    2.计算四个边需要padding的像素宽度,然后padding
    def resize_img_keep_ratio(img_name,target_size):
        img = cv2.imread(img_name)
        old_size= img.shape[0:2]
        #ratio = min(float(target_size)/(old_size))
        ratio = min(float(target_size[i])/(old_size[i]) for i in range(len(old_size)))
        new_size = tuple([int(i*ratio) for i in old_size])
        img = cv2.resize(img,(new_size[1], new_size[0]))
        pad_w = target_size[1] - new_size[1]
        pad_h = target_size[0] - new_size[0]
        top,bottom = pad_h//2, pad_h-(pad_h//2)
        left,right = pad_w//2, pad_w -(pad_w//2)
        img_new = cv2.copyMakeBorder(img,top,bottom,left,right,cv2.BORDER_CONSTANT,None,(0,0,0))
        return img_new
    if__name__=='main':
        img = ''
        target_size=[448,112]
        resize_img_keep_ratio()
    

    作者:涂山容容

    链接:https://www.jianshu.com/p/3092835eab61
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    学习进度条
    阅读《实例化需求》10-12章有感
    学习进度条
    阅读《实例化需求》7–9章有感
    学习进度条
    软件需求与分析课堂讨论一
    课程引言课后作业1
    MVC实例应用模式
    MVC模式介绍
    二十三种设计模式
  • 原文地址:https://www.cnblogs.com/wangyarui/p/12058445.html
Copyright © 2011-2022 走看看