Spaces:
Sleeping
Sleeping
| from typing import Tuple | |
| import cv2 | |
| import numpy as np | |
| def resize_and_pad(image: np.array, | |
| new_shape: Tuple[int, int], | |
| padding_color: Tuple[int] = (144, 144, 144) | |
| ) -> np.array: | |
| h_org, w_org = image.shape[:2] | |
| w_new, h_new = new_shape | |
| padd_left, padd_right, padd_top, padd_bottom = 0, 0, 0, 0 | |
| #Padding left to right | |
| if h_org >= w_org: | |
| img_resize = cv2.resize(image, (int(w_org*h_new/h_org), h_new)) | |
| h, w = img_resize.shape[:2] | |
| padd_left = (w_new-w)//2 | |
| padd_right = w_new - w - padd_left | |
| ratio = h_new/h_org | |
| #Padding top to bottom | |
| if h_org < w_org: | |
| img_resize = cv2.resize(image, (w_new, int(h_org*w_new/w_org))) | |
| h, w = img_resize.shape[:2] | |
| padd_top = (h_new-h)//2 | |
| padd_bottom = h_new - h - padd_top | |
| ratio = w_new/w_org | |
| image = cv2.copyMakeBorder(img_resize, padd_top, padd_bottom, padd_left, padd_right, cv2.BORDER_CONSTANT,None,value=padding_color) | |
| return image, ratio, (padd_left, padd_top) | |
| def normalization_input(image: np.array) -> np.array: | |
| image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) #BGR to RGB | |
| img = image.transpose((2, 0, 1)) # HWC to CHW | |
| img = np.ascontiguousarray(img).astype(np.float32) | |
| img /=255.0 | |
| img = img[np.newaxis, ...] | |
| return img | |