더북(TheBook)

코드 5-4 트랙바를 이용한 영상의 밝기 조절하기 [ch05/brightness]

01    void on_brightness(int pos, void* userdata);
02     
03    void brightness4()
04    {
05        Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE);
06     
07        if (src.empty()) {
08            cerr << "Image load failed!" << endl;
09            return;
10        }
11     
12        namedWindow("dst");
13        createTrackbar("Brightness", "dst", 0, 100, on_brightness, (void*)&src);
14        on_brightness(0, (void*)&src);
15     
16        waitKey();
17        destroyAllWindows();
18    }
19     
20    void on_brightness(int pos, void* userdata)
21    {
22        Mat src = *(Mat*)userdata;
23        Mat dst = src + pos;
24     
25        imshow("dst", dst);
26    }

 

12행 결과 영상을 출력하고 트랙바를 부착할 dst 창을 미리 생성합니다.

13행 dst 창에 트랙바를 부착하고 콜백 함수 on_brightness를 등록합니다. 입력 영상 src의 주소를 트랙바 콜백 함수의 사용자 데이터로 설정합니다.

14행 프로그램 실행 시 dst 창에 레나 영상이 정상적으로 표시되도록 강제로 on_brightness() 함수를 호출합니다.

20~26행 트랙바 콜백 함수에서 밝기 조절된 결과 영상 dst를 화면에 출력합니다.

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