2013-10-28 13 views
1

目前我有许多用于更改图像值的滑块。我正在使用滑块的OpenCV轨迹栏,它为我的每个滑块调用了不同的函数。我想将我的滑块回调点指向单个回调函数,然后使用用户数据来确定哪个跟踪栏发起了呼叫。如何使用OpenCV trackbar传递用户数据

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作为参考的地址。

int val = *((int*)&userdata); 

这似乎很麻烦,因为我然后必须从val处获取值的地址。有没有更简单的方法来做到这一点?

+0

不应该是'int val = *((int *)userdata)'? – Bull

+0

返回值而不是地址是。我只想知道是否有更好的方式发送用户数据。 –

回答

1

不,没有更简单的方法。这对于你想要的功能而言是最小的。

+0

如果是这样的话,我会保持它原样。 –