더북(TheBook)

앞에서 소개한 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행 영상의 산술 연산 입력으로 사용할 영상을 그레이스케일 형식으로 불러와서 src1src2 변수에 저장합니다.

22~25행 src1과 src2 영상을 이용하여 덧셈, 뺄셈, 평균, 차이 연산을 수행하고, 그 결과 영상을 각각 dst1, dst2, dst3, dst4 변수에 저장합니다.

27~30행 덧셈, 뺄셈, 평균, 차이 연산의 결과 영상을 각각 새 창으로 나타냅니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.