Spaces:
Runtime error
Runtime error
File size: 1,547 Bytes
fadb92b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | from PIL import Image
from detectron2.data import transforms as T
class Resize(T.Augmentation):
"""Resize image to a fixed target size"""
def __init__(self, shape, interp=Image.BICUBIC):
"""
Args:
shape: (h, w) tuple or a int
interp: PIL interpolation method
"""
if isinstance(shape, int):
shape = (shape, shape)
shape = tuple(shape)
self._init(locals())
def get_transform(self, image):
return T.ResizeTransform(image.shape[0], image.shape[1], self.shape[0], self.shape[1], self.interp)
# Custom transform that resizes and then pads to fixed size
class ResizeAndPad(T.Augmentation):
def __init__(self, target_size, pad_value=0, interp=Image.BICUBIC):
super().__init__()
self.target_size = target_size # (height, width)
self.interp = interp
self.pad_value = pad_value
def get_transform(self, img):
h, w = img.shape[:2]
scale = min(self.target_size[0] / h, self.target_size[1] / w)
new_h, new_w = int(h * scale), int(w * scale)
# First resize preserving aspect ratio
resize_t = T.ResizeTransform(h, w, new_h, new_w, self.interp)
# Then pad to target size
pad_h, pad_w = self.target_size[0] - new_h, self.target_size[1] - new_w
top = pad_h // 2
left = pad_w // 2
pad_t = T.PadTransform(left, top, pad_w - left, pad_h - top, new_h, new_w, pad_value=self.pad_value)
return T.TransformList([resize_t, pad_t])
|