当前位置:   article > 正文

【Pytorch】自定义的transfomer模块(torchvision)---ZeroPaddingResize_pytorch resize with padding

pytorch resize with padding

1.目的

有时候直接进行resize会有形变,所以想到这样的方式,同比例缩放,然后补0。

2.实现

参考:https://www.pythonf.cn/read/144858

  1. class ZeroPaddingResize(object):
  2. """
  3. resize image with same scale, fill with zero padding
  4. """
  5. def __init__(self, size=(224, 224), interpolation=Image.BILINEAR):
  6. self.size = size
  7. self.interpolation = interpolation
  8. def __call__(self, img):
  9. ih, iw = img.size
  10. h, w = self.size[0], self.size[1]
  11. scale = min(w / iw, h / ih)
  12. new_w = int(iw * scale+0.5)
  13. new_h = int(ih * scale+0.5)
  14. img = img.resize((new_w, new_h), self.interpolation)
  15. new_img = Image.new('RGB', self.size, (0, 0, 0))
  16. new_img.paste(img, ((w-new_w)//2, (h-new_h)//2))
  17. return new_img

3.使用

  1. import torchvision
  2. import ZeroPaddingResize
  3. transform_train = torchvision.transforms.Compose([
  4. ZeroPaddingResize((224, 224)),
  5. torchvision.transforms.ToTensor(),
  6. ])

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/86732
推荐阅读
相关标签
  

闽ICP备14008679号