비트와이즈 연산은 주로 마스킹을 할 때 유용합니다. 일부 원하는 부분만을 마스킹을 톻해 얻어낼 수 있는 방법입니다.
OpenCV에서 제공하는 비트와이즈 연산
bitwise_and(img1, img2, mask=None)
: And 연산.bitwise_or(img1, img2, mask=None)
: Or 연산bitwise_Xor(img1, img2, mask=None)
: Xor 연산bitwise_Not(img1, img2, mask=None)
: Not 연산
아래 예제코드를 보시면 어떤 영역이 각각 마스킹 되는지 확인하기 좋습니다.
각 픽셀에 대해 두 이미지들 간 And/Or/Xor/Not 등에 의해 연산됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import cv2 import numpy as np import matplotlib.pylab as plt img1 = np.zeros((200, 400)) img2 = np.zeros((200, 400)) img1[:, :200] = 255 # 좌측만 흰색 img2[100:200, :] = 255 # 아래쪽만 흰색 bitAnd = cv2.bitwise_and(img1, img2) bitOr = cv2.bitwise_or(img1, img2) bitXor = cv2.bitwise_xor(img1, img2) bitNot = cv2.bitwise_not(img1) imgs = {'img1': img1, 'img2':img2, 'and':bitAnd, 'or': bitOr, 'Xor': bitXor, 'Not(img1)': bitNot} for i, (title, img) in enumerate(imgs.items()): plt.subplot(3, 2, i+1) plt.title(title) plt.imshow(img, 'gray') plt.xticks([]); plt.yticks([]) plt.show() | cs |
'Developer > OpenCV' 카테고리의 다른 글
[OpenCV] 움직임을 인식하는 영상 (motion detecting) (4) | 2020.08.15 |
---|---|
[OpenCV] 카메라 영상 출력하기 (1) | 2020.08.14 |
[OpenCV] 알파블렌딩을 이용한 이미지 합성 (0) | 2020.04.08 |
[OpenCV] 이미지에서 관심영역 설정하기 (좌표 입력, 마우스 드래그) (6) | 2020.02.03 |
[OpenCV] 동영상 파일 기본 속성 확인 및 변경 (fps, width, height 등) (0) | 2020.01.27 |
댓글