Note
OpenCV는 영상의 비트 단위 논리 연산을 수행하는 연산자 재정의도 지원합니다. 그러므로 코드 6-2의 22~25행처럼 bitwise_and(), bitwise_or(), bitwise_xor(), bitwise_not() 함수를 사용하는 것 대신 아래와 같이 코드를 작성해도 동일하게 동작합니다.
dst1 = src1 & src2; // bitwise_and(src1, src2, dst1); dst2 = src1 | src2; // bitwise_or(src1, src2, dst2); dst3 = src1 ^ src2; // bitwise_xor(src1, src2, dst3); dst4 = ~src1; // bitwise_not(src1, dst4);
즉, Mat 객체 간의 & 연산은 비트 단위 논리곱, | 연산은 비트 단위 논리합, ^ 연산은 비트 단위 배타적 논리합을 의미합니다. Mat 타입의 변수 앞에 ~ 연산자를 붙이면 해당 Mat 영상에 대해 비트 단위 부정(NOT) 연산을 수행합니다. 참고로 8비트 unsigned char 자료형을 사용하는 영상의 경우, 비트 단위 부정 연산은 영상의 반전을 구하는 것과 그 결과가 같습니다.