비트 연산
- threshold : 이미지에서 픽셀값이 임계값보다 크거나 작을 때, 각각 설정한 값으로 할당하기
- threshold를 하기 위해서는 이미지를 grayscale로 변환해야 함
- 이진화(흑/백)하기 위한 기준값(임계값)
import cv2
import numpy as np
src1 = cv2.imread('./data/lena.jpg')
src2 = cv2.imread('./data/opencv_logo.png')
cv2.imshow('src2', src2)
rows,cols,channels = src2.shape
roi = src1[0:rows, 0:cols]
gray = cv2.cvtColor(src2,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(gray, 160, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)
cv2.imshow('mask', mask)
cv2.imshow('mask_inv', mask_inv)
src1_bg = cv2.bitwise_and(roi, roi, mask = mask)
cv2.imshow('src1_bg', src1_bg)
src2_fg = cv2.bitwise_and(src2, src2, mask = mask_inv)
cv2.imshow('src2_fg', src2_fg)
dst = cv2.bitwise_or(src1_bg, src2_fg)
cv2.imshow('dst', dst)
src1[0:rows, 0:cols] = dst
cv2.imshow('result',src1)
cv2.waitKey(0)
cv2.destroyAllWindows()