Processor

【OpenCV】 비트 연산(Bitwise)

작성자 임베디드코리아 작성일26-04-16 22:07 조회118회 댓글0건
< *  비트 연산(Bitwise)  * >

◆ 비트 연산은 하나 또는 두 이미지에 대해 비트 연산을 수행한다.
◆ Numpy 클래스의 비트 연산과 동일한 의미와 결과를 갖는다.
◆ 비트 연산 표현(&, | 등)을 통해 Mat 클래스 간의 연산을 수행할 수 있다.

----< 예제 : Bitwise.py  >-------------------------------------------------------------------
import numpy as np
import cv2

src = cv2.imread("Image/lena.jpg")
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

_and = cv2.bitwise_and(gray, binary)
_or = cv2.bitwise_or(gray, binary)
_xor = cv2.bitwise_xor(gray, binary)
_not = cv2.bitwise_not(gray)

src = np.concatenate((np.zeros_like(gray), gray, binary, np.zeros_like(gray)), axis = 1)
dst = np.concatenate((_and, _or, _xor, _not), axis = 1)
dst = np.concatenate((src, dst), axis = 0)

cv2.imshow("dst", dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
--------------------------------------------------------------------------------------------------------
▶ _and = cv2.bitwise_and(gray, binary)
  _or = cv2.bitwise_or(gray, binary)
  _xor = cv2.bitwise_xor(gray, binary)
  _not = cv2.bitwise_not(gray)

  • cv2.bitwise(연산 이미지1, 연산 이미지2)를 이용하여 비트 연산을 진행한다.
  • 논리곱(bitwise_and), 논리합(bitwise_or), 배타적 논리합(bitwise_xor), 부정(bitwise_not) 등으로 연산이 가능한다.
  • 논리곱 함수는 두 이미지의 요소별 논리곱을 계산한다.
  • 연산 이미지1과 연산 이미지2의 값을 비트 단위로 파악하며, 해당 비트에 대해 AND 연산을 진행한다.
  • 논리합 함수는 두 이미지의 요소별 논리합을 계산한다.
  • 연산 이미지1과 연산 이미지2의 값을 비트 단위로 파악하며, 해당 비트에 대해 OR 연산을 진행한다.
  • 배타적 논리합 함수는 두 이미지의 요소별 배타적 논리합을 계산한다.
  • 연산 이미지1과 연산 이미지2의 값을 비트 단위로 파악하며, 해당 비트에 대해 XOR 연산을 진행한다.
  • 논리합 함수는 두 이미지의 요소별 논리합을 계산한다.
  • 연산 이미지1의 값을 비트 단위로 파악하며, 해당 비트에 대해 NOT 연산을 진행한다.