參考鏈接:https://www.jianshu.com/p/3092835eab61
現有的圖像是高瘦高瘦的,所以直接resize成矩形不合適。改變了整個結構。
所以采用的是先resize再padding的方式。
1.resize圖片,先計算最長邊的resize的比例,然后按照該比例resize。
2.計算四個邊需要padding的像素寬度,然后padding
所以采用的是先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
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。