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;
//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)
,阻塞了图像的显示。