背景
例子:
原始图片:[190,289]
目标图片:[224,289]
需要从原始图像中裁剪出(224,224)大小的图片,原始图片大小不够,所以要填充图片至[224,289]
通用情况:
需求:从原始图片中填充像素使图片大小变为指定大小,且不改变原始图片
原始图片:[iw, ih]
目标图片:[dw, dh]
裁剪尺寸:[patchsize, patchsize]
若iw < patchsize:
则[dw=patchsize, dh=ih]
若ih < patchsize:
则[dw=iw, dh=patchsize]
代码
def scale(root, txtpath, patch_size):
'''
txtpath:filename, mos
'''
fh = open(txtpath, 'r')
pic_names = []
for line in fh:
line = line.split('\n') # ['00_00_00.png,9.516666666666667', '']
words = line[0].split(',') # ['00_00_00.png', '9.516666666666667']
picname = words[0]
pic_names.append(picname)
for name in pic_names:
picpath = os.path.join(root, 'projection_img', 'projection_1', name) #存放原始图片的路径
img = Image.open(picpath)
iw, ih = img.size # 原始图像的尺寸
if iw < 224 | ih < 224:
scale = max(patch_size / iw, patch_size / ih) # 转换的最大比例
nw = int(iw * scale + 0.5)
nh = ih
else:
nw = iw
nh = ih
new_image = Image.new('RGB', (nw, nh), (0, 255, 0)) # 生成绿色图像
# # // 为整数除法,计算图像的位置
new_image.paste(img, (0, 0)) # 将图像填充在背景图的(0,0)处,其余部分为绿色
new_image.save(name)
# print(new_image.size)