createTrackbar的int(*)()变量那个怎么填,举例
时间: 2024-02-19 22:58:18 浏览: 12
如果你要使用函数指针作为createTrackbar的回调参数,那么应该声明一个返回类型为void,参数列表为(int, void*)的函数,并将其地址传递给createTrackbar函数。下面是一个示例代码:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
void onTrackbar(int value, void* userdata) {
// 在这里处理滑条变化的事件
}
int main() {
namedWindow("window");
int value = 50;
createTrackbar("trackbar", "window", &value, 100, onTrackbar);
waitKey(0);
return 0;
}
```
在这个例子中,我们定义了一个名为onTrackbar的回调函数,并将其地址作为createTrackbar的第五个参数传递。在onTrackbar函数中,我们可以处理滑条变化的事件。在主函数中,我们创建了一个名为window的窗口,并使用createTrackbar函数创建了一个名为trackbar的滑条。滑条的值存储在value变量中,初始值为50,最大值为100。当滑条的值发生变化时,onTrackbar函数将被调用。waitKey(0)函数用于等待用户关闭窗口。
相关问题
createTrackbar的int(*)()便来那个怎么填
在使用OpenCV中的createTrackbar函数时,第三个参数是回调函数,它会在滑条的值发生变化时被调用。回调函数的类型应该是void functionName(int, void*),其中第一个参数是滑条当前的值,第二个参数是用户指定的数据指针。如果你需要在回调函数中使用其他参数,可以将它们作为全局变量或者使用lambda表达式。因此,createTrackbar的第三个参数应该填写一个返回类型为void,参数列表为(int, void*)的函数名或者lambda表达式。int(*)()是一个返回类型为int,参数列表为空的函数指针类型,不适用于createTrackbar函数的回调参数。
(int*)*和int**
(int*)*和int**都是指针类型,但它们有一些区别。
(int*)*是一个指向指针的指针。它可以用来存储指向指针的地址。例如:
```c
int a = 5;
int *p = &a;
int **pp = &p;
```
在上面的例子中,pp是一个指向指针p的指针。通过pp,我们可以访问p指针所指向的变量a。
int**是一个指向指针的指针的指针。它可以用来存储指向指针的指针的地址。例如:
```c
int a = 5;
int *p = &a;
int **pp = &p;
int ***ppp = &pp;
```
在上面的例子中,ppp是一个指向指针pp的指针的指针。通过ppp,我们可以访问pp指针所指向的指针p,进而访问p指针所指向的变量a。
总结一下:
(int*)*是一个指向指针的指针,可以用来存储指向指针的地址。
int**是一个指向指针的指针的指针,可以用来存储指向指针的指针的地址。