我的原始乳腺钼靶图像的大小为1914x2294,按比例压缩后变成347x416,最后再进行填充得到416x416。
from PIL import Image
def pad_image(image, target_size):
iw, ih = image.size # 原始图像的尺寸
w, h = target_size # 目标图像的尺寸
scale = min(float(w) / float(iw), float(h) / float(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.show()
# // 为整数除法,计算图像的位置
new_image.paste(image, ((w - nw) // 2, (h - nh) // 2)) # 将图像填充为中间图像,两侧为灰色的样式
new_image.show()
return new_image
def main():
img_path = 'D:\\tensorflow\\000001.JPG'
image = Image.open(img_path)
size = (416, 416)
pad_image(image, size) # 填充图像
if __name__ == '__main__':
main()
结果如下:
左边为原图,右边为最终填充后的416x416图