Spaces:
Running
on
Zero
Running
on
Zero
File size: 1,328 Bytes
19da45c |
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 |
import numpy as np
def imcrop_center(img_list, crop_p_h, crop_p_w):
new_img = []
for i, _img in enumerate(img_list):
if crop_p_h / crop_p_w > _img.shape[0] / _img.shape[1]: # crop left and right
start_h = int(0)
start_w = int((_img.shape[1] - _img.shape[0] / crop_p_h * crop_p_w) / 2)
crop_size = (_img.shape[0], int(_img.shape[0] / crop_p_h * crop_p_w))
else:
start_h = int((_img.shape[0] - _img.shape[1] / crop_p_w * crop_p_h) / 2)
start_w = int(0)
crop_size = (int(_img.shape[1] / crop_p_w * crop_p_h), _img.shape[1])
_img_src = crop(_img, start_h, start_w, crop_size[0], crop_size[1])
new_img.append(_img_src)
return new_img
def crop(img, start_h, start_w, crop_h, crop_w):
img_src = np.zeros((crop_h, crop_w, *img.shape[2:]), dtype=img.dtype)
hsize, wsize = crop_h, crop_w
dh, dw, sh, sw = start_h, start_w, 0, 0
if dh < 0:
sh = -dh
hsize += dh
dh = 0
if dh + hsize > img.shape[0]:
hsize = img.shape[0] - dh
if dw < 0:
sw = -dw
wsize += dw
dw = 0
if dw + wsize > img.shape[1]:
wsize = img.shape[1] - dw
img_src[sh : sh + hsize, sw : sw + wsize] = img[dh : dh + hsize, dw : dw + wsize]
return img_src
|