目前,我有许多用于更改图像值的滑块。我正在为滑块使用OpenCV跟踪栏,它为我的每个滑块都提供了对不同功能的回调。我想让我的滑块回调指向单个回调函数,然后使用用户数据来标识哪个跟踪栏进行了调用。

Here is the documentation for the track bar

我不确定应该将哪些值传递给void *,以及如何从回调函数中检索该值,以下是我的跟踪栏的示例。

int ref = 1;
createTrackbar("Name","Window",0, 1, myFunc, &ref);

在我的回调函数中,我尝试检索ref的值。
void myFunc(int value, void *userdata)
{
    int val = *((int*)&userdata);
    cout << val << endl;
}

我在尝试将指针转换回int时遇到问题,这是我在网上找到的解决方案,为我提供了val作为ref的地址。
int val = *((int*)&userdata);

这似乎很麻烦,因为然后我不得不从val的地址取回值。有没有更简单的方法可以做到这一点?

最佳答案

不,没有简单的方法。这是您所需功能的最低要求。

关于c++ - 如何使用OpenCV跟踪栏传递用户数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19635803/

10-11 15:01