OpenCV에서는 영상의 비트 단위 논리 연산을 수행하는 bitwise_and(), bitwise_or(), bitwise_xor(), bitwise_not() 함수를 제공합니다. 각 함수의 이름에서 쉽게 알 수 있듯이, bitwise_and() 함수는 비트 단위 논리곱, bitwise_or() 함수는 비트 단위 논리합, bitwise_xor() 함수는 비트 단위 배타적 논리합, bitwise_not() 함수는 비트 단위 부정 연산을 수행합니다. 각 함수의 인자 구성은 다음과 같습니다.
void bitwise_and(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray()); void bitwise_or(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray()); void bitwise_xor(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray()); void bitwise_not(InputArray src1, OutputArray dst, InputArray mask = noArray()); |
|
• src1 |
첫 번째 입력 행렬 또는 스칼라 |
• src2 |
두 번째 입력 행렬 또는 스칼라. src1과 크기와 타입이 같아야 합니다. |
• dst |
출력 행렬. src1과 같은 크기, 같은 타입으로 생성됩니다. dst 행렬 원소 값은 논리 연산 종류에 의해 각각 다르게 결정됩니다. |
• mask |
마스크 영상 |
앞서 나열된 네 개의 비트 단위 논리 연산 함수들 중에서 bitwise_and(), bitwise_or(), bitwise_xor() 함수는 두 개의 영상을 입력으로 받고, bitwise_not() 함수는 하나의 영상을 입력으로 받습니다. 각각의 함수들은 모두 mask 인자를 가지고 있어서, mask 영상의 픽셀 값이 0이 아닌 위치에서만 논리 연산을 수행하도록 설정할 수 있습니다. 만약 mask 인자를 따로 지정하지 않거나, noArray() 또는 Mat()를 mask 인자로 설정하면 영상 전체에 대해 논리 연산을 수행합니다.