python图像填充与裁剪/resize的实现代码

08-31 102阅读 0评论

前言

有时候我们需要把图片填充成某个数字的整数倍才能送进模型。例如,有些模型下采样倍率是8倍,或者16倍,那么输入的长和高就分别应该是8或16的整数倍。如果图片达不到,除了拉伸图像(会造成比例改变),另一种就是先填充,后裁剪。相信搞过NLP的同学并不陌生啦。

代码

from math import ceil from torchvisiON.transforms.functional import to_tensor, to_pil_image from PIL import Image import torch # 填充到最接近base整数倍的长和宽图像大小 def Get_padding_pic_mask(origin_png, result_png, result_mask_png, rgb=[[130, 206, 255]], base=4): # C, H, W src = Image.open(origin_png) src = to_tensor(src) # print(src.shape)  # torch.Size([3, 800, 600]) # channel: (R, G, B) / 255 origin_h, origin_w = src.shape[1], src.shape[2] print('原图像大小, height: {}, width: {}'.format(origin_h, origin_w))  h = ceil(origin_h / base) * base w = ceil(origin_w / base) * base  img = torch.ones(3, h, w) # 如果想要填充是黑色注释掉上一句,换下面这一句 # img = torch.zeros(3, h, w)  img[:, :origin_h, :origin_w] = src  # 保存填充后的图片 to_pil_image(img).save(result_png)  # 处理一下mask mask = torch.tensor(rgb) / 255  mask = mask.view(3, 1, 1).repeat(1, h, w) # 保存填充后的mask to_pil_image(mask).save(result_mask_png)   # 图像输出后我们需要clip一下 def clip_unpadding(input_png, output_png, origin_h, origin_w): # C, H, W img = Image.open(input_png) img = to_tensor(img) img = img[:, :origin_h, :origin_w] # 保存裁剪后的图片 to_pil_image(img).save(output_png)  if __name__ == '__main__': # origin_png = 'pic/pic.jpg' # result_png = 'pic/pic_padding.jpg' # result_mask_png = 'pic/mask_padding.jpg' # get_padding_pic_mask(origin_png, result_png, result_mask_png)  input_png = 'pic/pic_padding.jpg' output_png = 'pic/pic_clip.jpg' # 原图像大小, height: 567, width: 390 clip_unpadding(input_png, output_png, 567, 390) 

resize

有时候我们也要改变图片的宽和高。

from PIL import Image def resize_img(origin_png, resize_png, height, width): img = Image.open(origin_png) img = img.resize((width, height)) img.save(resize_png) if __name__ == '__main__': origin_png = 'pic/white.jpg' resize_png = 'pic/white_resize.png' resize_img(origin_png, resize_png, 800, 600)

到此这篇关于Python图像填充与裁剪/resize的文章就介绍到这了,更多相关python图像resize内容请搜索云初冀北以前的文章或继续浏览下面的相关文章希望大家以后多多支持云初冀北!

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:Goliszhou@gmail.com
$

发表评论

表情:
评论列表 (暂无评论,102人围观)

还没有评论,来说两句吧...