앞에서 소개한 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행 덧셈, 뺄셈, 평균, 차이 연산의 결과 영상을 각각 새 창으로 나타냅니다.

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