1 使用letter box方法缩放图片,防止图片缩放时失真
假如我们有一张1920x1080的图片想缩放到224x224,如果不进行任何处理,那么图片肯定会出现失真的问题。如果要把一张920x1080的图片缩放到224x224,我们需要首先保持原始图片的纵横比,然后在需要补齐的部分使用一个默认值填充,这里选择的是128。
具体的示例代码如下:
from PIL import Image
def resize_image_with_scale(image, size):
iw, ih = image.size
w, h = size
scale = min(w/iw, h/ih)
nw = int(iw*scale)
nh = int(ih*scale)
image = image.resize((nw, nh), Image.Resampling.BICUBIC)
new_image = Image.new('RGB', size, (128, 128, 128))
new_image.paste(image, ((w-nw)//2, (h-nh)//2))
return new_image
if __name__ == '__main__':
jpg_file_path = "C:\\Users\\xxx\\Desktop\\a.jpeg"
img = Image.open(jpg_file_path)
new_image = resize_image_with_scale(img, size=(224, 224))
new_image.save("b.jpg")
图片处理前后的效果如下:
从结果上看,在两边的区域padding了(128,128,128)的这种纯灰度的值。这样就可以保持图片既可以缩放也可以不失真了。
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Python – 使用letter box方法缩放图片,防止图片缩放时失真
原文链接:https://www.stubbornhuang.com/2645/
发布于:2023年06月05日 16:08:30
修改于:2023年07月17日 15:31:30
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
49