def __call__(self, im, label=None): """ Args: im (np.ndarray): The Image data. label (np.ndarray, optional): The label data. Default: None. Returns: (tuple). When label is None, it returns (im, ), otherwise it returns (im, label), Raises: TypeError: When the 'img' type is not numpy. ValueError: When the length of "im" shape is not 3. """ if not isinstance(im, np.ndarray): raise TypeError("Resize: image type is not numpy.") if len(im.shape) != 3: raise ValueError('Resize: image is not 3-dimensional.') if self.interp == "RANDOM": interp = random.choice(list(self.interp_dict.keys())) else: interp = self.interp im = functional.resize(im, self.target_size, self.interp_dict[interp]) if label is not None: label = functional.resize(label, self.target_size, cv2.INTER_NEAREST) if label is None: return (im, ) else: return (im, label)
def __call__(self, data): height = data['img'].shape[0] width = data['img'].shape[1] new_im = np.zeros((max(height, width), max( height, width), 3)) + self.im_padding_value if 'label' in data['gt_fields']: new_label = np.zeros((max(height, width), max( height, width))) + self.label_padding_value if height > width: padding = int((height - width) / 2) new_im[:, padding:padding + width, :] = data['img'] if 'label' in data['gt_fields']: new_label[:, padding:padding + width] = data['label'] else: padding = int((width - height) / 2) new_im[padding:padding + height, :, :] = data['img'] if 'label' in data['gt_fields']: new_label[padding:padding + height, :] = data['label'] data['img'] = np.uint8(new_im) data['img'] = functional.resize(data['img'], self.target_size, interp=cv2.INTER_CUBIC) if 'label' in data['gt_fields']: data['label'] = np.uint8(new_label) data['label'] = functional.resize(data['label'], self.target_size, interp=cv2.INTER_CUBIC) return data
def __call__(self, data): if self.min_scale_factor == self.max_scale_factor: scale_factor = self.min_scale_factor elif self.scale_step_size == 0: scale_factor = np.random.uniform(self.min_scale_factor, self.max_scale_factor) else: num_steps = int((self.max_scale_factor - self.min_scale_factor) / self.scale_step_size + 1) scale_factors = np.linspace(self.min_scale_factor, self.max_scale_factor, num_steps).tolist() np.random.shuffle(scale_factors) scale_factor = scale_factors[0] w = int(round(scale_factor * data['img'].shape[1])) h = int(round(scale_factor * data['img'].shape[0])) data['img'] = functional.resize(data['img'], (w, h), cv2.INTER_LINEAR) for key in data.get('gt_fields', []): data[key] = functional.resize(data[key], (w, h), cv2.INTER_NEAREST) return data
def __call__(self, data): data['trans_info'].append(('resize', data['img'].shape[0:2])) data['img'] = functional.resize(data['img'], self.target_size) for key in data.get('gt_fields', []): if key == 'trimap': data[key] = functional.resize(data[key], self.target_size, cv2.INTER_NEAREST) else: data[key] = functional.resize(data[key], self.target_size) return data
def __call__(self, data): data['trans_info'].append(('resize', data['img'].shape[0:2])) h, w = data['img'].shape[0:2] rw = w - w % 32 rh = h - h % 32 data['img'] = functional.resize(data['img'], (rw, rh)) for key in data.get('gt_fields', []): data[key] = functional.resize(data[key], (rw, rh)) return data
def __call__(self, data): data['trans_info'].append(('resize', data['img'].shape[0:2])) if self.interp == "RANDOM": interp = random.choice(list(self.interp_dict.keys())) else: interp = self.interp data['img'] = functional.resize(data['img'], self.target_size, self.interp_dict[interp]) for key in data.get('gt_fields', []): data[key] = functional.resize(data[key], self.target_size, cv2.INTER_NEAREST) return data
def __call__(self, data): data['trans_info'].append(('resize', data['img'].shape[0:2])) h, w = data['img'].shape[0:2] rw = w - w % self.mult_int rh = h - h % self.mult_int data['img'] = functional.resize(data['img'], (rw, rh)) for key in data.get('gt_fields', []): if key == 'trimap': data[key] = functional.resize(data[key], (rw, rh), cv2.INTER_NEAREST) else: data[key] = functional.resize(data[key], (rw, rh)) return data
def __call__(self, im, label=None): """ Args: im (np.ndarray): The Image data. label (np.ndarray, optional): The label data. Default: None. Returns: (tuple). When label is None, it returns (im, ), otherwise it returns (im, label). """ height = im.shape[0] width = im.shape[1] new_im = np.zeros((max(height, width), max( height, width), 3)) + self.im_padding_value if label is not None: new_label = np.zeros((max(height, width), max( height, width))) + self.label_padding_value if height > width: padding = int((height - width) / 2) new_im[:, padding:padding + width, :] = im if label is not None: new_label[:, padding:padding + width] = label else: padding = int((width - height) / 2) new_im[padding:padding + height, :, :] = im if label is not None: new_label[padding:padding + height, :] = label im = np.uint8(new_im) im = functional.resize(im, self.target_size, interp=cv2.INTER_CUBIC) if label is not None: label = np.uint8(new_label) label = functional.resize(label, self.target_size, interp=cv2.INTER_CUBIC) if label is None: return (im, ) else: return (im, label)
def __call__(self, data): h, w = data['img'].shape[:2] if self.scale is not None: scale = np.random.uniform(self.scale[0], self.scale[1]) else: scale = 1. if self.size is not None: scale_factor = max(self.size[0] / w, self.size[1] / h) else: scale_factor = 1 scale = scale * scale_factor w = int(round(w * scale)) h = int(round(h * scale)) data['img'] = functional.resize(data['img'], (w, h)) for key in data.get('gt_fields', []): if key == 'trimap': data[key] = functional.resize(data[key], (w, h), cv2.INTER_NEAREST) else: data[key] = functional.resize(data[key], (w, h)) return data
def __call__(self, im, im_info=None, label=None): """ Args: im (np.ndarray): The Image data. im_info (dict, optional): A dictionary maintains image info before this transformation. Default: None. label (np.ndarray, optional): The label data. Default: None. Returns: (tuple). When label is None, it returns (im, im_info), otherwise it returns (im, im_info, label). """ if self.min_scale_factor == self.max_scale_factor: scale_factor = self.min_scale_factor elif self.scale_step_size == 0: scale_factor = np.random.uniform(self.min_scale_factor, self.max_scale_factor) else: num_steps = int((self.max_scale_factor - self.min_scale_factor) / self.scale_step_size + 1) scale_factors = np.linspace(self.min_scale_factor, self.max_scale_factor, num_steps).tolist() np.random.shuffle(scale_factors) scale_factor = scale_factors[0] w = int(round(scale_factor * im.shape[1])) h = int(round(scale_factor * im.shape[0])) im = functional.resize(im, (w, h), cv2.INTER_LINEAR) if label is not None: label = functional.resize(label, (w, h), cv2.INTER_NEAREST) if label is None: return (im, im_info) else: return (im, im_info, label)
def __call__(self, im, im_info=None, label=None): """ Args: im (np.ndarray): The Image data. im_info (dict, optional): A dictionary maintains image info before this transformation. Default: None. label (np.ndarray, optional): The label data. Default: None. Returns: (tuple). When label is None, it returns (im, im_info), otherwise it returns (im, im_info, label), where im_info["shape_before_resize"] is updated to the size of the image before this transformation. Raises: TypeError: When the 'img' type is not numpy. ValueError: When the length of "im" shape is not 3. """ if im_info is None: im_info = list() im_info.append(('resize', im.shape[:2])) if not isinstance(im, np.ndarray): raise TypeError("Resize: image type is not numpy.") if len(im.shape) != 3: raise ValueError('Resize: image is not 3-dimensional.') if self.interp == "RANDOM": interp = random.choice(list(self.interp_dict.keys())) else: interp = self.interp im = functional.resize(im, self.target_size, self.interp_dict[interp]) if label is not None: label = functional.resize(label, self.target_size, cv2.INTER_NEAREST) if label is None: return (im, im_info) else: return (im, im_info, label)
def __call__(self, data): data['trans_info'].append(('resize', data['img'].shape[0:2])) data['img'] = functional.resize(data['img'], self.target_size) for key in data.get('gt_fields', []): data[key] = functional.resize(data[key], self.target_size) return data