【OpenCV教程】Trackbar到底怎么用?

@TOC


1.createTrackbar创建滚动条

1.1 API

CV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname,
                              int* value, int count,
                              TrackbarCallback onChange = 0,
                              void* userdata = 0);
  • 参数如下

参数
含义

trackbarname

滚动条名字

winname(window name)

窗体名字。要先用nameWindow创建好同名窗体,滚动条才会出现

value

欲控制的变量的地址

count

欲控制的变量的最大值(最小为0)

onChange

回调函数,默认为空。如果想要传入,那么其参数是固定的

userdata

万能指针,默认为空。如果想要传入,通常用一个类的对象的地址。作为可使用的数据库,用来给回调函数提供变量支持

void onChange(int,void*);

2.getTrackbarPos获得滚动条当前的值

  • 参数如下

参数
含义

trackbarname

滚动条名字

winname(window name)

窗体名字

3.1 原理

不使用createTrackbar函数的参数value、onChange、userdata参数。通过while(1)的无限循环,在循环中不断地用getTrackbarPos函数动态地获取滚动条的值,然后在循环内部用这些值进行操作。

3.2 效果

4.使用方式二

4.1 原理

不使用getTrackbarPos函数,使用createTrackbar的全部参数,在onChange回调函数中完成所有操作,由于回调函数的参数表是固定的,因此**需要userdata传入所需数据。**在每次移动滚动条时,相当于调用了一次回调函数,就完成了操作。结尾没有waitKey(0)就显示不了多久。

4.2 效果

最后更新于

这有帮助吗?