메뉴 닫기

OpenCV 트랙바 이벤트 처리 예제

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);
}

트랙바 조정 결과







답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다