안녕하세요. 언제나휴일의 언휴예요.
이번에는 이미지 비트 연산을 해 볼 거예요.
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)
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)
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)
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)
5. 이미지 비트 NOT
이미지 비트 NOT을 수행하면 0은 1, 1은 0으로 바뀝니다.
not_image = cv2.bitwise_not(image1) cv2_imshow(not_image)