OpenCV에서 트랙바 이벤트를 처리하는 방법에 대한 간단한 예제 코드입니다. 밝기와 명암을 조절하기 위한 2개의 트랙바가 있으며, 각각 0~100 단위로 조정할 수 있습니다.
예제 코드
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void on_bright_change(int pos, void* userdata);
void on_contrast_change(int pos, void* uerdata);
int main()
{
Mat img = imread("lena512.bmp", CV_8UC1);
namedWindow("image");
createTrackbar("bright", "image", 0, 100, on_bright_change, (void*)&img);
createTrackbar("contrast", "image", 0, 100, on_contrast_change, (void*)&img);
setTrackbarPos("bright", "image", 50);
setTrackbarPos("contrast", "image", 50);
imshow("image", img);
waitKey(0);
destroyAllWindows();
return 0;
}
void on_bright_change(int pos, void* userdata)
{
Mat src = *(Mat*)userdata;
Mat dst = src +
(pos - 50) +
(src - 128) * (getTrackbarPos("contrast", "image") - 50) / 50;
imshow("image", dst);
}
void on_contrast_change(int pos, void* userdata)
{
Mat src = *(Mat*)userdata;
Mat dst = src + (src - 128) * (pos - 50) / 50 +
getTrackbarPos("bright", "image") - 50;
imshow("image", dst);
}