def ResizePadding(height, width):
desized_size = (height, width) # desized_size = (640, 640)
def resizePadding(image, **kwargs):
old_size = image.shape[:2] # old_size = 1920*1080
max_size_idx = old_size.index(max(old_size)) # max_size_idx = 0
ratio = float(desized_size[max_size_idx]) / max(old_size) # ratio = 640*1.0/1920=0.33333
new_size = tuple([int(x * ratio) for x in old_size]) # new_size = (1920*640/1920, 1080*640/1920) = (640, 360)
if new_size > desized_size: # False
min_size_idx = old_size.index(min(old_size))
ratio = float(desized_size[min_size_idx]) / min(old_size)
new_size = tuple([int(x * ratio) for x in old_size])
image = cv2.resize(image, (new_size[1], new_size[0])) # image = (640, 360)
delta_w = desized_size[1] - new_size[1] # delta_w = 640 - 360 = 280
delta_h = desized_size[0] - new_size[0] # delta_h = 640 - 640 = 0
top, bottom = delta_h // 2, delta_h - (delta_h // 2) # top, bottom = 0//2, 0-(0//2) = 0, 0
left, right = delta_w // 2, delta_w - (delta_w // 2) # left, right = 280//2, 280-(280//2) = 140, 140
image = cv2.copyMakeBorder(image, top, bottom, left, right, cv2.BORDER_CONSTANT) # 上、下、左、右填黑边 image = (640, 640)
return image
return resizePadding
tiny-yolov3输入图像resize过程解析
最新推荐文章于 2023-11-01 19:50:10 发布