앞에서 소개한 add(), addWeighted(), subtract(), absdiff() 함수를 이용하여 다양한 영상의 산술 연산을 수행하는 예제 코드를 코드 6-1에 나타냈습니다. 코드 6-1은 lenna.bmp 파일과 square.bmp 파일을 이용하여 덧셈, 뺄셈, 평균, 차이 영상을 생성하고 그 결과를 화면에 출력합니다. 이 예제 코드와 사용된 영상 파일은 내려받은 예제 파일 중 ch06/arithmetic 프로젝트 폴더에서 확인할 수 있습니다.
코드 6-1 영상의 산술 연산 예제 프로그램 [ch06/arithmetic]
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 add(src1, src2, dst1); 23 subtract(src1, src2, dst2); 24 addWeighted(src1, 0.5, src2, 0.5, 0, dst3); 25 absdiff(src1, src2, 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 }
• 9~10행 영상의 산술 연산 입력으로 사용할 영상을 그레이스케일 형식으로 불러와서 src1과 src2 변수에 저장합니다.
• 22~25행 src1과 src2 영상을 이용하여 덧셈, 뺄셈, 평균, 차이 연산을 수행하고, 그 결과 영상을 각각 dst1, dst2, dst3, dst4 변수에 저장합니다.
• 27~30행 덧셈, 뺄셈, 평균, 차이 연산의 결과 영상을 각각 새 창으로 나타냅니다.