在检测中,需要把原始图像转换为,与目标尺寸匹配的图像,保持等比例,其余部分用灰色填充。
pad_image
步骤:
- 计算按目标图像缩放之后的宽高;
- resize()原始图像;
- 新建目标尺寸
target_size
的图像; - paste()贴图,将缩放后的原始图像,放入目标图像中;
def pad_image(image, target_size):
iw, ih = image.size # 原始图像的尺寸
w, h = target_size # 目标图像的尺寸
scale = min(w / iw, h / ih) # 转换的最小比例
# 保证长或宽,至少一个符合目标图像的尺寸
nw = int(iw * scale)
nh = int(ih * scale)
image = image.resize((nw, nh), Image.BICUBIC) # 缩小图像
image.show()
new_image = Image.new('RGB', target_size, (128, 128, 128)) # 生成灰色图像
# // 为整数除法,计算图像的位置
new_image.paste(image, ((w - nw) // 2, (h - nh) // 2)) # 将图像填充为中间图像,两侧为灰色的样式
new_image.show()
return new_image
测试:
def main():
img_path = './test_imgs/6412275179854758913.jpg'
image = Image.open(img_path)
size = (416, 416)
pad_image(image, size) # 填充图像
if __name__ == '__main__':
main()
输出:
OK, that’s all! Enjoy it!