코드 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를 화면에 출력합니다.