0

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

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

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

所以这是我的 inRange & Canny filter & 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)

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

4

1 回答 1

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您的函数,但如果是这种情况,您可以简单地添加一个switch-caseorif-sentencecallBackFunction更改给定函数调用的 Mat 。

于 2013-02-10T21:28:09.620 回答