OpenCV-Python (5) 마스크 연산과 ROI

hjwon·2023년 9월 5일
0

OpenCV-Python

목록 보기
5/6

📌 ROI

  • Region of Interest, 관심 영역
  • 영상에서 특정 연산을 수행하고자 하는 임의의 부분 영역


📌 마스크 연산

  • OpenCV는 일부 함수에 대해 ROI 연산을 지원하며, 이때 마스크 영상을 인자로 함께 전달해야 함
    - (e.g.) cv2.copyTo(), cv2.calcHist(), cv2.bitwise_or(), cv2.matchTemplate(), etc.
  • 마스크 영상은 cv2.CV_8UC1 타입 (그레이스케일 영상)
  • 마스크 영상의 픽셀 값이 0이 아닌 위치에서만 연산이 수행됨
    - 보통 마스크 영상으로는 0 또는 255로 구성된 이진 영상(binary image)을 사용


📌 마스크 연산을 지원하는 픽셀 값 복사 함수

cv2.copyTo(src, mask, dst=None) -> dst
  • src: 입력 영상

  • mask: 마스크 영상, cv2.CV_8U (numpy.uint8), 0이 아닌 픽셀에 대해서만 복사 연산을 수행

  • dst: 출력 영상, 만약 src와 크기 및 타입이 같은 dst를 입력으로 지정하면
    dst를 새로 생성하지 않고 연산을 수행, 그렇지 않으면 dst를 새로 생성하여 연산을 수행한 후 반환


💻 마스크 연산 예제

src = cv2.imread('airplane.bmp', cv2.IMREAD_COLOR)
mask = cv2.imread('mask_plane.bmp', cv2.IMREAD_GRAYSCALE)
dst = cv2.imread('field.bmp', cv2.IMREAD_COLOR)

# src, mask, dst는 모두 크기가 같아야 함
# src와 dst는 같은 타입이어야 하고, mask는 그레이스케일 타입의 이진 영상
cv2.copyTo(src, mask, dst)

# Numpy의 불리언 인덱싱(Boolean indexing)을 이용한 마스크 연산
#dst[mask > 0] = src[mask > 0]

마스크 연산 결과


profile
열공워니

0개의 댓글