[OpenCV] Mask에 딱 맞는 BBox 그리기

롬롬·2023년 5월 20일
1
post-thumbnail

Segmentation 테스크의 프로젝트를 진행하다보면, 가끔 그 mask에 맞는 bbox를 그려야할 때가 있다. cv2.rectangle을 사용하여 그렸을 때, 직사각형이 잘 그려지지만, 마스크가 기울어져 있는 경우에는 내가 원하는대로 결과가 나오지 않는다..!

위 그림을 예시로 들어보면 내가 원하는 형태의 bounding box는 파랑색이지만, cv2.rectangle을 사용하여 bbox를 그리게 되면 초록색으로 그려지게 된다.

Mask에 딱 맞게 bbox를 그리는 방법은 cv2.minAreaRect 함수를 사용해주면 된다.

rect = cv2.minAreaRect(src)
box = cv2.boxPoints(rect)
box = np.int0(box)
img = cv2.drawContours(img, [box], 0, (0, 0, 255), 2)

다음은 spine segmentation 모델의 결과에 bbox를 그려보았당. 왼쪽 이미지는 cv2.rectangle로 그린 bbox이고, 오른쪽 이미지는 mask에 cv2.minAreaRect를 사용하여 그린 bbox이다. minAreaRect를 사용하면 기울어진 mask도 잘 잡아내는 것을 볼 수 있다~!

참고

profile
🤗🤗🤗

0개의 댓글