4.4 비트연산


비트연산은 말 그대로 0, 1을 가지고 하는 연산으로 두 이미지의 동일한 위치에 대한 AND, OR, NOT, XOR 연산을 진행 합니다.


예제를 보면 참 단순한데 이미지에서 배경을 지우거나 뭔가 찾아내거나 하는데 사용이 됩니다.

  

cv2.bitwise_and(src1, src2[, dst[, mask]]) → dst

cv2.bitwise_or(src1, src2[, dst[, mask]]) → dst

cv2.bitwise_not(src[, dst[, mask]]) → dst

cv2.bitwise_xor(src1, src2[, dst[, mask]]) → dst

 

parameter

내용

src1

이미지 파일

src2

이미지 파일

dst

결과 파일

mask

적용 영역 지정

 

기능이 단순해서 예제도 흔한 내용 입니다.


import numpy as np

import cv2

 

imgFile1 = 'F:/Python/images/image_calcu001.png'

imgFile2 = 'F:/Python/images/image_calcu002.png'

 

# image read

img1 = cv2.imread(imgFile1)

img2 = cv2.imread(imgFile2)

 

bit_and = cv2.bitwise_and(img1, img2)

bit_or = cv2.bitwise_or(img2, img1)

bit_not = cv2.bitwise_not(img2)

bit_xor = cv2.bitwise_xor(img2, img1)

 

 

cv2.imshow("bit_and", bit_and)

cv2.imshow("bit_or", bit_or)

cv2.imshow("bit_not", bit_not)

cv2.imshow("bit_xor", bit_xor)

 

cv2.waitKey(0)

cv2.destroyAllWindows()



- 원본 이미지


두개의 원본 이미지가 있습니다색이 없으면 검게 보이고(0) 색이 있으면 흰색(1)으로 표현 됩니다.


opencv_bit_add


opencv_bit_add


4.4.1 and 연산


두 그림에서 모두 흰색(1)인 부분만 흰색으로 나타 납니다.


A

0

0

1

1

B

0

1

0

1

A and B

0

0

0

1

 

opencv_bit_add


 

4.4.2 or 연산


두 그림에서 모두 검은색(0)인 부분만 검정색으로 나타 납니다.

 

A

0

0

1

1

B

0

1

0

1

A or B

0

1

1

1


opencv_bit_add


 

4.4.3 not 연산


B 그림에서 색이 반대로 나타 납니다.

 

B

0

1

not B

1

0


opencv_bit_add


 

4.4.4 xor 연산


두 그림에서 값이 서로 같으면 검은색 같지 않으면 흰색으로 나타 납니다.

 

A

0

0

1

1

B

0

1

0

1

A xor B

0

1

1

0

 

opencv_bit_add


+ Recent posts