코드 5-4의 14행에서 on_brightness() 콜백 함수를 강제로 호출하는 코드에 대해 알아보겠습니다. 코드 5-4에서 밝기가 조절된 레나 영상을 dst 창에 출력하는 imshow() 함수 호출 코드는 트랙바 콜백 함수 on_brightness() 안에만 포함되어 있습니다. 그러므로 brightness4() 함수가 실행되어 dst 창이 화면에 처음 나타날 때 on_brightness() 함수가 실행되어야 dst 창에 레나 영상이 나타날 수 있습니다. 사실 트랙바 콜백 함수는 사용자가 직접 호출하는 용도가 아니라 시스템에 의해 자동으로 호출되도록 만드는 함수이지만, 여기서는 프로그램 동작을 매끄럽게 만들기 위한 편법으로 on_brightness() 함수를 강제로 호출한 것입니다. 만약 14행의 on_brightness() 함수 호출을 생략하면 프로그램이 시작될 때는 레나 영상이 나타나지 않고, 트랙바를 움직이기 시작한 후부터 레나 영상이 나타납니다.
코드 5-4의 brightness4() 함수를 실행한 결과 화면을 그림 5-6에 나타냈습니다. brightness4() 함수가 실행되면 그림 5-6의 왼쪽 그림처럼 Brightness 값이 0인 위치에 트랙바가 위치하며, 원본과 같은 밝기의 레나 영상이 dst 창에 나타납니다. brightness4() 함수에서 createTrackbar() 함수를 호출할 때 트랙바의 최댓값을 100으로 설정하였기에 실제 dst 창에 나타난 트랙바는 0부터 100 사이에서 그 위치를 선택할 수 있습니다. 만약 마우스를 이용하여 트랙바의 위치를 변경하면 그림 5-6의 오른쪽 그림처럼 트랙바 위치에 해당하는 밝기만큼 밝아진 결과 영상이 dst 창에 나타나게 됩니다.
▲ 그림 5-6 트랙바를 이용한 영상의 밝기 조절 결과