Python opencv resize圖片並保存原有的圖像比例

參考連接:https://www.jianshu.com/p/3092835eab61code

現有的圖像是高瘦高瘦的,因此直接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()

做者:塗山容容blog

連接:https://www.jianshu.com/p/3092835eab61 來源:簡書 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
相關文章
相關標籤/搜索