OpenCV createTrackbar



我正试图使用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-caseif-sentence,以更改给定函数调用的Mat。

相关内容

  • 没有找到相关文章

最新更新