반응형
저번시간의 심화 입니다.
만약 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를 적립시켜주면 됩니다!
결과물은 다음과 같습니다
반응형
'Image Processing > Cv2' 카테고리의 다른 글
opencv waitkey 설명 (0) | 2021.07.16 |
---|---|
opencv 를 이용해서 rtsp 동영상 받기(ft. multithreading) (0) | 2021.06.18 |
(opencv) 두 이미지의 차이를 박스로 나타내기 (0) | 2021.03.10 |
OpenCV를 이용해서 두 개의 이미지 비교하기 (SSIM) (0) | 2021.03.10 |
Cv2 를 이용해서 이미지 crop하고 나머지 mask 하기 (0) | 2021.03.03 |