c++ - 如何使用 OpenCV trackbar 传递用户数据

标签 c++ opencv void-pointers trackbar

目前,我有许多用于更改图像值的 slider 。我正在为 slider 使用 OpenCV 轨迹栏,它对我的​​每个 slider 都有一个不同函数的回调。我想让我的 slider 回调指向一个回调函数,然后使用用户数据来确定调用的是哪个轨迹栏。

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 trackbar 传递用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19635803/

相关文章:

c++ void* 在参数列表中有引用

c++ - 初始化文件范围变量时出现段错误

c++ - 如何在不使用宏的情况下在不实例化结构的情况下获取结构成员的大小?

python - 为什么我的 3D numpy 数组中的值在我将其写入文件时会发生变化?

java - OpenCV 2.4.4 Java - 抓取网络摄像头图片/流 (OSX)

c++ - void* 是否保留继承信息?

c++ - 在类中重载运算符+

c++ - QT中窗口的排列顺序

python - 如何在OpenCV2中将float32图片写入视频文件?

c - 菜鸟 void 指针混淆