앞부분 내용은 여기서
3. 부분 영상 다루기
(1) 부분 영상 참조와 복사
import numpy as np
import cv2
img1 = cv2.imread('HappyFish.jpg')
img2 = img1[40:120, 30:150]
img3 = img1[40:120, 30:150].copy()
img2.fill(0)
cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.imshow('img3', img3)
cv2.waitKey()
cv2.destroyAllWindows()

(2) 부분 영상 처리
import numpy as np
import cv2
img = cv2.imread('./data/lenna.bmp', cv2.IMREAD_GRAYSCALE)
img_face = img[200:400, 200:400]
cv2.add(img_face, 50, img_face)
cv2.imshow('img', img)
cv2.imshow('img_face', img_face)
cv2.waitKey()

4. 마스크 연산과 ROI
(1) 관심 영역(ROI)
- Region of Interest
- 영상에서 특정 연산을 수행하고자 하는 임의의 부분 영역

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

- 마스크 연산 예제

import sys
import cv2
src = cv2.imread('./data/airplane.bmp', cv2.IMREAD_COLOR)
mask = cv2.imread('./data/mask_plane.bmp', cv2.IMREAD_GRAYSCALE)
dst = cv2.imread('./data/field.bmp', cv2.IMREAD_COLOR)
if src is None or mask is None or dst is None:
print('Image load error')
sys.exit()
cv2.copyTo(src, mask, dst)
cv2.imshow('src', src)
cv2.imshow('mask', mask)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
