Image Processing/Cv2
Cv2 를 이용해서 multiple 이미지 crop하고 나머지 mask 하기
jinmc
2021. 3. 3. 18:00
반응형
저번시간의 심화 입니다.
만약 crop하고 싶은 roi가 한 개가 아니면 어떡할까요?
import numpy as np
import cv2
image = cv2.imread('download.jpg')
mask = np.zeros((image.shape[0], image.shape[1]))
# roi 정리 시작
roi = "0,0,300,0,300,300,0,300_300,300,600,300,600,600,300,600"
roi_list = roi.split("_")
print(roi_list)
croplist = []
for r in roi_list:
crop = []
cl = r.split(",")
for i in range(0, len(cl), 2):
crop.append([int(cl[i]), int(cl[i+1])])
croplist.append(crop)
# roi 정리 끝
mask = np.zeros((image.shape[0], image.shape[1]))
for cr in croplist:
pts = np.array([cr])
cv2.fillConvexPoly(mask, pts, 1)
mask = mask.astype(np.bool)
out = np.zeros_like(image)
out[mask] = image[mask]
image = out
cv2.imshow('Image', out)
cv2.waitKey(0)
cv2.destroyAllWindows()
for loop로 mask안에 pts를 적립시켜주면 됩니다!
결과물은 다음과 같습니다

반응형