in components/artifacts/aws.sagemaker.edgeManagerPythonClient/0.1.0/edge_manager_python_client.py [0:0]
def resize_short_within(img, short=512, max_size=1024, mult_base=32, interp=2):
"""
resizes the short side of the image so the aspect ratio remains the same AND the short
side matches the convolutional layer for the network
Args:
-----
img: np.array
image you want to resize
short: int
the size to reshape the image to
max_size: int
the max size of the short side
mult_base: int
the size scale to readjust the resizer
interp: int
see '_get_interp_method'
Returns:
--------
img: np.array
the resized array
"""
h, w, _ = img.shape
im_size_min, im_size_max = (h, w) if w > h else (w, h)
scale = float(short) / float(im_size_min)
if np.round(scale * im_size_max / mult_base) * mult_base > max_size:
# fit in max_size
scale = float(np.floor(max_size / mult_base) * mult_base) / float(im_size_max)
new_w, new_h = (
int(np.round(w * scale / mult_base) * mult_base),
int(np.round(h * scale / mult_base) * mult_base)
)
img = cv2.resize(img, (new_w, new_h),
interpolation=_get_interp_method(interp, (h, w, new_h, new_w)))
return img