OpenCV 사이트에 나와있는 bitwise의 기능은 흑백 사진을 가지고 정리가 되어있더라고요.
출처 : https://www.pyimagesearch.com/2021/01/19/opencv-bitwise-and-or-xor-and-not/
import os
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img_path = 'cv_practice.png'
img = cv.imread(img_path)
# Convert BGR to HSV
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
# define range of yellow color in HSV
lower_blue = np.array([20,20,100])
upper_blue = np.array([32,255,255])
"""
# define range of blue color in HSV
lower_blue = np.array([100,100,100])
upper_blue = np.array([130,255,255])
"""
# Threshold the HSV image to get only blue colors
mask = cv.inRange(hsv, lower_blue, upper_blue)
# Bitwise-AND mask and original image
res = cv.bitwise_and(img,img, mask= mask)
plt.figure(figsize=(12,6))
plt.subplot(131)
plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
plt.subplot(132)
plt.imshow(cv.cvtColor(mask, cv.COLOR_BGR2RGB))
plt.subplot(133)
plt.imshow(cv.cvtColor(res, cv.COLOR_BGR2RGB))
plt.show()
본래 프로젝트는 위 코드를 사용하여 노란색 영역을 masking 하고 출력하는 함수였지만
res = cv.bitwise_and(img_2,img, mask= mask)
따위로 코드가 주어질 때는 어떻게 출력하는지 궁금하여 알아보았습니다.
res_and = cv.bitwise_and(img,img_test, mask= mask)
res_and = cv.bitwise_or(img,img_test, mask= mask)
res_and = cv.bitwise_xor(img_test,img, mask= mask)
res_and = cv.bitwise_not(img,mask= mask)