더북(TheBook)

다양한 임계값을 이용하여 이진화를 수행하고 그 결과를 바로 확인할 수 있는 예제 프로그램 소스 코드를 코드 11-1에 나타냈습니다. 코드 11-1은 영상 출력 창에 0~255 사이의 정수를 선택할 수 있는 트랙바를 생성하고, 트랙바 위치를 이진화 임계값으로 사용하여 이진화를 수행합니다. 코드 11-1에 나타난 소스 코드 파일과 사용된 영상 파일은 내려받은 예제 파일 중 ch11/threshold 프로젝트에서 확인할 수 있습니다.

코드 11-1 트랙바를 이용한 이진화 예제 프로그램 [ch11/threshold]

01    #include "opencv2/opencv.hpp"
02    #include <iostream>
03     
04    using namespace cv;
05    using namespace std;
06     
07    void on_threshold(int pos, void* userdata);
08     
09    int main(int argc, char* argv[])
10    {
11        Mat src;
12    
13        if (argc < 2)
14            src = imread("neutrophils.png", IMREAD_GRAYSCALE);
15        else
16            src = imread(argv[1], IMREAD_GRAYSCALE);
17     
18        if (src.empty()) {
19            cerr << "Image load failed!" << endl;
20            return -1;
21        }
22     
23        imshow("src", src);
24     
25        namedWindow("dst");
26        createTrackbar("Threshold", "dst", 0, 255, on_threshold, (void*)&src);
27        setTrackbarPos("Threshold", "dst", 128);
28     
29        waitKey(0);
30        return 0;
31    }
32     
33    void on_threshold(int pos, void* userdata)
34    {
35        Mat src = *(Mat*)userdata;
36     
37        Mat dst;
38        threshold(src, dst, pos, 255, THRESH_BINARY);
39     
40        imshow("dst", dst);
41    }

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