Koo's.Co

[OpenCV] 마스크 연산, ROI(Region of Interest) 본문

Python/영상처리

[OpenCV] 마스크 연산, ROI(Region of Interest)

kth321 2023. 1. 4. 20:47

1. ROI(Region of Interest)

 연산에서 특정 연산을 수행하고자 하는 임의의 부분 영역

2. 마스크 연산

 - openCV는 일부 함수에 대해 ROI 연산을 지원, 마스크 영상을 인자로 함께 전달해야 한다

 - 마스크 영상은 cv2.CV_8UC1 (grayscale image)

 - 마스크 영상의 픽셀값이 0이 아닌 위치에서만 연산이 수행됨 (픽셀 0 = 검정색)

 - 마스크 영상으로는 0, 255로 구성된 binary image를 사용

3. copyTo

cv2.copyTo(src, mask, dst=None) -> dst

 - src: 입력 영상

 - mask: 마스크 영상, cv2.CV_8U (numpy.uint8)

 - dst: 출력 영상. src와 크기, 타입이 같은 dst를 입력으로 지정하면 dst를 생성하지 않고 연산 수행

          그렇지 않은 경우 dst를 새로 생성하여 연산을 수행한 후 반환

4. png 파일을 이용한 마스크 추출

import sys
import cv2

src = cv2.imread('image.png', cv2.IMREAD_UNCHANGED)
if src is None:
  print('Image load failed')
  sys.exit()
  
mask = src[:, :, -1] # alpha채널 사용
src = src[:, :, 3] # 색상 채널 사용
dst = cv2.imread('image2.jpg', cv2.IMREAD_COLOR())
if dst is None:
  print('Image load failed')
  sys.exit()
  
h, w = src.shape[:2]

# 두 영상의 크기가 다르면 정상적으로 합칠 수 없기 때문에
# crop을 이용해 동일한 크기의 view를 만들어 합침
crop = dst[10:10+h, 10:10+w]
cv2.copyTo(src, mask, crop)

cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()

 

'Python > 영상처리' 카테고리의 다른 글

[OpenCV] 컬러 영상 기본 함수  (0) 2023.01.04
[OpenCV] 산술 연산  (0) 2023.01.04
[matplotlib] 영상 출력  (0) 2023.01.04
[OpenCV] 기본 함수  (0) 2023.01.04
[OpenCV] 영상출력하기  (0) 2020.09.14
Comments