마스크 연산
- OpenCV는 일부 함수에 대해 ROI 연산을 지원하며, 이때 마스크 영상 (mask Image)을 인자로 함께 전달해야 한다.
- e.g) cv2.copyTo(), cv2.calcHist(), cv2.bitwise_or(), cv2.matchTemplate(), etc.
- 마스크 영상은 cv2.CV_8UC1 타입이다.(그레이스테일 영상)
- 마스크 영상의 픽셀 값이 0이 아닌 위치에서만 연산이 수행된다.
- 보통 마스크 영상으로는 0 또는 255로 구성된 이진 영상(binary image)을 사용한다.
관심 영역 (ROI)
- Region Of Interest
- 영상에서 특정 연산을 수행하고자 하는 임의의 부분 영역이다.
마스크 연산을 지원하는 픽셀 값 복사 함수
cv2.copyTo(src, mask, dst=None) -> dst
- src : 입력 영상
- color - grayscale 다 가능하다.
- mask : 마스크 영상
- 보통은 흰색과 검정색으로 구성된 흑백영상이어야 한다.
- cv2.CV_8U. (numpy.uint8). 0이 아닌 픽셀에 대해서만 복사 연산을 수행한다.(흰색 부분만 복사)
- 즉, mask를 잘 사용하면 일부 영역만 복사가 가능하다.
- dst : 출력 영상.
- color - grayscale 다 가능하다.
- 만약 src와 크기 및 타입이 같은 dst를 입력으로 지정하면 dst를 서로 생성하지 않고 연산을 수행한다. 그렇지 않으면 dst를 새로 생성하여 연산을 수행한 후 반환한다.
결과값을 보면, airplane에서 mask부분을 복사해와서 dst에 붙여넣기 된 사진을 확인 가능하다.
dst[mask > 0] = src[mask > 0]을 사용해도 같은 결과값을 얻을 수 있다.
'OpenCV' 카테고리의 다른 글
[OpenCV] 그리기 함수 (0) | 2023.03.04 |
---|---|
[OpenCV] cv2.VideoCapture 클래스 (0) | 2023.03.02 |
[OpenCV] Img crop / 밝기 조절 (0) | 2023.03.02 |
[OpenCV] 영상데이터 표현, 생성, 복사 (0) | 2023.02.21 |
[OpenCV] Matplotlib을 이용한 영상 출력 (0) | 2023.02.21 |