4def crop_image(image, bboxes, box_type='xyxy'):
5 """
6 이미지에서 여러개의 박스의 영역을 잘라내는 기능
7 TODO: 일반화 시키기, 영상 범위 넘어가는 부분 체크, 넘어갈경우 입력 박스의 크기로 영상을 자를지(영상 외부는 블랙 처리) 체크
8 args:
9 image (np.array): 원본 이미지, shape (H, W, 3 or 1) or (H, W)
10 bboxes (np.array): 잘라낼 영역, shape (N, 4 or 5), 2번째 차원의 0~3번 인덱스는 박스정보를 담고있어야함
11 box_type (str): 입력한 박스 구조
12 return (list[np.array]): 잘라낸 박스 리스트
13 """
14 cropped_img = []
15
16 if bboxes.ndim != 1:
17 for bbox in bboxes:
18 if box_type == 'xywh':
19 bbox = xywh_to_xyxy(bbox)
20
21 x1,y1,x2,y2 = bbox[:4]
22 cropped_img.append(image[int(y1): int(y2), int(x1): int(x2)])
23 else:
24 bbox = bboxes[:4]
25 if box_type == 'xywh':
26 bbox = xywh_to_xyxy(bbox)
27
28 x1,y1,x2,y2 = bbox[:4]
29 cropped_img.append(image[int(y1): int(y2), int(x1): int(x2)])
30
31 return cropped_img
32