我正试图使用OpenCV提供的createTrackbar函数在我的OpenCV应用程序上创建Trackbar。
我想添加三个轨迹条,实际上一个将在颜色范围内混洗,第二个通过Canny过滤器值混洗,而第三个通过medianLur值混洗。
我正在努力添加一个整数变量的指针,它的值将反映滑块的位置。
这是我的inRange&Canny过滤器&medianLur函数:
Mat range_out;
inRange(blur_out, Scalar(100, 100, 100), Scalar(120, 255, 255), range_out);
Mat mBlur;
medianBlur(erode,mBlur,7);
Mat canny_out;
Canny(mBlur, canny_out, 125,350);
createTrackbar("Colour values: ", window_Output, &range_out, 255);
createTrackbar("Colour values: ", window_Output, &mBlur, 7);
createTrackbar("Colour values: ", window_Output, &canny_out, 350);
根据我所读到的,变量必须是整数(即range_out是矩阵Mat而不是int)
有人能告诉我一个不错的教程吗?在那里我可以找到我想要的答案,或者解释如何做到这一点。
我通常以以下方式使用回调函数,这使代码不那么麻烦。
const int median_blur_max = 5;
int median_blur;
Mat img;
Mat src, dst;
void callBackFunction( int, void* ) {
medianBlur(src,dst,median_blur);
imshow("Controls", img );
}
int main( int argc, char** argv ) {
namedWindow("Controls", 1);
createTrackbar("Median blur", "Controls", &median_blur, median_blur_max, callBackFunction );
callBackFunction(median_blur, 3);
waitKey(0);
return 0;
}
该示例并不完整,但对callBackFunction的元素和用法进行了很好的概述。
我似乎不清楚您是否希望更改函数中的Mat
,但如果是这样,您可以简单地在callBackFunction
中添加switch-case
或if-sentence
,以更改给定函数调用的Mat。