OpenCV createTrackbar

时间:2013-02-10 21:07:09

标签: c++ opencv

我正在尝试使用OpenCV提供的createTrackbar函数在我的OpenCV应用程序上创建一个跟踪栏。

我想添加三个轨道栏,实际上是一个将在颜色范围内随机播放的轨道栏,第二个通过Canny过滤器值进行随机播放,以及第三个通过medianBlur值进行随机播放的轨道栏。

我正在努力添加指向整数变量的指针,整数变量的值将反映滑块的位置。

所以这是我的inRange& Canny过滤器& medianNlur函数:

    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是Matrix Mat而不是int)

有人可以指导我找一个体面的教程,在那里我可以找到我正在寻找的答案或解释如何去做。

1 个答案:

答案 0 :(得分:0)

我通常以下面的方式使用回调函数,这使得代码不那么麻烦。

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,但如果是这样的话,您可以在{{1}中添加switch-caseif-sentence更改给定函数调用的Mat。