在深度学习中经常需要自己制作数据集,很多情况下由于图片的通道或者大小不统一会严重影响模型训练报错,直接对图片进行缩放会导致图片上的目标物体发生形变,可以通过生成固定规格的0值图像,与原始图形粘贴就可以按照我们想要的大小进行缩放了
from PIL import Image
import os
import numpy as np
path = r'' #图片所在的文件夹
i = 0
for file in os.listdir(path):
with Image.open(os.path.join(path, file)) as im1:
im1 = im1.convert("RGB") #转为RGB格式
a = np.zeros([max(im1.size[0],im1.size[1]),max(im1.size[0],im1.size[1]),3]) #以最大边长生成0矩阵
img_zero = Image.fromarray(np.uint8(a)) #0矩阵转为PIL
img_zero.paste(im1, (0, 0, im1.size[0], im1.size[1])) #将原来的图片贴到0矩阵生成的图片上
img = img_zero.resize((200, 200), Image.ANTIALIAS) #Image.ANTIALIAS放缩图片质量较高
# img.show() 是否查看转换后的图片
img.save("./{}.jpg".format(i)) #选择保存的路径
i+=1