앞에서 소개한 bitwise_and(), bitwise_or(), bitwise_xor(), bitwise_not() 함수를 이용하여 영상의 논리 연산을 수행하는 예제 프로젝트 소스 코드를 코드 6-2에 나타냈습니다. 코드 6-2는 lenna.bmp 파일과 square.bmp 파일을 이용하여 논리곱, 논리합, 배타적 논리합 연산을 수행하고, lenna.bmp 영상에 대해서 부정 연산을 수행한 후 그 결과를 화면에 출력합니다. 이 예제 코드와 사용된 영상 파일은 내려받은 예제 파일 중 ch06/logical 프로젝트 폴더에서 확인할 수 있습니다.
코드 6-2 영상의 논리 연산 예제 프로그램 [ch06/logical]
01 #include "opencv2/opencv.hpp" 02 #include <iostream> 03 04 using namespace cv; 05 using namespace std; 06 07 int main(void) 08 { 09 Mat src1 = imread("lenna256.bmp", IMREAD_GRAYSCALE); 10 Mat src2 = imread("square.bmp", IMREAD_GRAYSCALE); 11 12 if (src1.empty() || src2.empty()) { 13 cerr << "Image load failed!" << endl; 14 return -1; 15 } 16 17 imshow("src1", src1); 18 imshow("src2", src2); 19 20 Mat dst1, dst2, dst3, dst4; 21 22 bitwise_and(src1, src2, dst1); 23 bitwise_or(src1, src2, dst2); 24 bitwise_xor(src1, src2, dst3); 25 bitwise_not(src1, dst4); 26 27 imshow("dst1", dst1); 28 imshow("dst2", dst2); 29 imshow("dst3", dst3); 30 imshow("dst4", dst4); 31 waitKey(); 32 33 return 0; 34 }