OpenCV createTrackerBar的使用


int cv::createTrackbar(
	const String & 	trackbarname,//trackerBar名称
	const String & 	winname,//绘制TrackerBar的窗口
	int * 	value,//需要动态改变的值
	int 	count,//最大值
	TrackbarCallback 	onChange = 0,//回调函数
	void * 	userdata = 0 //传递的其他参数
)

需要传入多个参数时,需要自定义数据类型,然后在最后一个参数位置进行传递
例如:

typedef struct JustValues {
	int value1;
	int value2;
}JustValues;

image

//main函数中调用

createTrackbar("value11", "bgImage", &(justValues.value1), 100, on_valueChange, &justValues);


//滑动滑条时触发的回调函数
void on_valueChange(int value, void* userdata) {
	JustValues* justValues = (JustValues*)userdata;

	Mat gray;
	cvtColor(source, gray, COLOR_BGR2GRAY);
	Mat dilate = preprocess(gray, justValues->value1, justValues->value2);
}

如果创建了两个TrackerBar,但是只显示了一个,检查一下,是否是在回调函数中写了waitKey(0),阻塞了图像的显示。

posted @ 2022-03-19 20:08  Kelvin's  阅读(162)  评论(0)    收藏  举报