OpenCV in colab – 이미지 비트 연산

안녕하세요. 언제나휴일의 언휴예요.

이번에는 이미지 비트 연산을 해 볼 거예요.

1. 사용할 이미지 시각화

colab에서 OpenCV를 사용하기 위해 필요한 모듈들을 임포트합시다.

이번 실습에서는 cv2와 cv2_imshow 및 numpy를 사용합니다.

import cv2
import numpy as np
from google.colab.patches import cv2_imshow

Colab의 왼쪽 메뉴에서 파일을 선택한 후에 드라이브 마운트를 선택하여 구글 드라이버와 연동합니다.

하나는 eh.jpg로 아바타입니다.

다른 하나는 mask에 사용할 이미지로 왼쪽은 검정색, 오른쪽은 흰색으로 칠해진 이미지입니다.

로딩하여 시각화합시다.

path1 = '/content/drive/MyDrive/files/eh.jpg'
path2 = '/content/drive/MyDrive/files/black_white.png'

image1 = cv2.imread(path1,cv2.IMREAD_COLOR)
image1 = cv2.resize(image1, dsize=(320,200),interpolation=cv2.INTER_AREA)

image2 = cv2.imread(path2,cv2.IMREAD_COLOR)
image2 = cv2.resize(image2, dsize=(320,200),interpolation=cv2.INTER_AREA)

cv2_imshow(image1)
cv2_imshow(image2)
eh 이미지
black_white 이미지

2. 이미지 비트 AND

이미지 비트 AND를 수행하면 모두 1인 비트는 1, 아니면 0입니다.

black_white의 왼쪽은 검정색으로 값이 0, 모든 비트가 0입니다.

따라서 eh 이미지의 왼쪽은 and masking에 의해 0으로 바뀝니다.(검정색)

black_white의 오른쪽은 흰색으로 값이 255, 모든 비트가 1입니다.

따라서 eh 이미지의 오른쪽은 변하지 않습니다.

and_image = cv2.bitwise_and(image1,image2)
cv2_imshow(and_image)
and mask한 결과

3. 이미지 비트 OR

이미지 비트 OR를 수행하면 모두 0인 비트는 0, 아니면 1입니다.

black_white의 왼쪽은 검정색으로 값이 0, 모든 비트가 0입니다.

따라서 eh 이미지의 왼쪽은 변하지 않습니다.

black_white의 오른쪽은 흰색으로 값이 255, 모든 비트가 1입니다.

따라서 eh 이미지의 오른쪽은 or masking에 의해 모든 비트가 1(255)로 바뀝니다.(흰색)

or_image = cv2.bitwise_or(image1,image2)
cv2_imshow(or_image)
or mask한 결과

4. 이미지 비트 XOR

이미지 비트 XOR를 수행하면 같은 값이면 0, 다른 값이면 1입니다.

black_white의 왼쪽은 검정색으로 값이 0, 모든 비트가 0입니다.

따라서 eh 이미지의 왼쪽은 변하지 않습니다.(0과 0은 0, 0과 1은 1)

black_white의 오른쪽은 흰색으로 값이 255, 모든 비트가 1입니다.

따라서 eh 이미지의 오른쪽은 xor masking에 의해 모든 비트가 반전합니다.(1과 0은 1, 1과 1은 0)

xor_image = cv2.bitwise_xor(image1,image2)
cv2_imshow(xor_image)
xor mask한 결과

5. 이미지 비트 NOT

이미지 비트 NOT을 수행하면 0은 1, 1은 0으로 바뀝니다.

not_image = cv2.bitwise_not(image1)
cv2_imshow(not_image)
not 결과