我们创建了一个trackbar,如下:

createTrackbar(trackBarName, winName, &posTrackBar, maxValue, onChangeTrackBar);

现在来看一下头文件中对每个参数的解释:

@param trackbarname Name of the created trackbar.
@param winname Name of the window that will be used as a parent of the created trackbar.
@param value Optional pointer to an integer variable whose value reflects the position of the
slider. Upon creation, the slider position is defined by this variable.
@param count Maximal position of the slider. The minimal position is always 0.
@param onChange Pointer to the function to be called every time the slider changes position. This
function should be prototyped as void Foo(int,void\*); , where the first parameter is the trackbar
position and the second parameter is the user data (see the next parameter). If the callback is
the NULL pointer, no callbacks are called, but only value is updated.
@param userdata User data that is passed as is to the callback. It can be used to handle trackbar
events without using global variables.*/
CV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname,int* value, int count,TrackbarCallback onChange = 0,void* userdata = 0);

第一个参数trackbarname对应如下左图,第二个参数winname对应下图右

 

第三个参数value对应下图左的初始值,第四个参数count对应下图右中可以达到的最大值

 

来看第五个参数TrackbarCallback onChange = 0;这里定义了一个TrackbarCallback类型的形参onChange,TrackbarCallback是什么类型呢?下面是源代码头文件中的解释

/** @brief Callback function for Trackbar see cv::createTrackbar
@param pos current position of the specified trackbar.
@param userdata The optional parameter.*/
typedef void (*TrackbarCallback)(int pos, void* userdata);

typedef的功能是定义新的类型。这句就是定义了一种TrackbarCallback的类型,并定义这种类型为指向函数的指针,这种函数以(int pos, void* userdata)为参数并返回void类型。后面就可以像使用int,char一样使用TrackbarCallback了。

好,现在就知道了,形参onChange是一个函数指针,那我们在最开始createTrackbar中传入的参数onChangeTrackBar就应该是一个地址,一个函数地址(函数名就是函数地址)

void onChangeTrackBar(int pos, void* usrdata)
{Mat src = img;Mat dst;// 二值化  threshold(src, dst, pos, 255, 0);imshow(winName, dst);
}
//注意:这里,第二个形参usrdata其实没有用到
//第一个参数在最开始的createTrackbar中虽然没有实参,但默认实参是第三个参数posTrackBar

如果我们在创建createTrackbar的时候用了第六个参数,那么第六个参数自动对应为onChangeTrackBar的第二个形参usrdata

createTrackbar(trackBarName, winName, &posTrackBar, maxValue, onChangeTrackBar,&img);

OpenCV:回调函数相关推荐

  1. OPENCV回调函数

    OPENCV回调函数 回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该 ...

  2. OpenCV(六)形态学操作1--基础:膨胀与腐蚀(回调函数)

    目录 形态学通用API:morphologyEx 一.基础理论 1.邻接关系 (1)四邻接: (2)D邻接: (3) 八邻接: 2.连通性 (1)四连通: (2)八连通: (3)m连通: 3.形态学基 ...

  3. OpenCV的滑块与回调函数

    一.滑块 opencv的滑块使用的API是createTrackbar,API原型如下: CV_EXPORTS int createTrackbar(const string& trackba ...

  4. Python Opencv 实现鼠标事件(包含一个练习)——事件触发讲解·以及鼠标回调函数的实现

    文章目录 鼠标事件概述 鼠标事件发生的结构 鼠标回调函数的标准格式 opencv下包含的所有事件--包含flag和event(可以看一下,熟悉常见事件范围) 鼠标事件的实现函数 一个完整的鼠标事件由一 ...

  5. Opencv鼠标回调函数

    1.目的 读取一张图片,在该图片上截取一个ROI区域,将截取的图像在新窗口显示,并可以保存至工程目录下. 2.实现环境 C++.VS2017.opencv 3.回调函数原理 回调函数就是一个通过函数指 ...

  6. 【opencv系列05】OpenCV4.X鼠标回调函数

    点击上方"AI搞事情"关注我们 一.回调函数 setMouseCallback(windowName, onMouse, param=None) windowName:窗口名称 o ...

  7. python mount回调函数_为python回调函数设置argtype

    我对Python很在行,所以希望我能正确地表达这个问题.在 整个问题涉及从Python调用C例程.我可以通过把一些相关的问题/答案凑在一起来接近,但我似乎不能把事情安排得很好.有两个方面:第一个是用指 ...

  8. 【个人笔记】08 回调函数+键盘响应操作

    个人资料,仅供学习使用 学习课程:OpenCV4 C++ 快速入门视频30讲--贾志刚 08 回调函数+键盘响应操作 opencv知识点: 回调函数 - callback 键盘响应 - waitKey ...

  9. OpenCV入门函数API解析

    一切图像皆Mat cvtColor:用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致 ...

  10. Go 学习笔记(16)— 函数(02)[函数签名、有名函数、匿名函数、调用匿名函数、匿名函数赋值给变量、匿名函数做回调函数]

    1. 函数签名 函数类型也叫做函数签名,可以使用 fmt.Printf("%T") 格式化参数打印函数类型. package mainimport "fmt"f ...

最新文章

  1. lucene源码分析的一些资料
  2. Sales Volume Analysis PoC app test - environment setup finished
  3. arm-linux-gcc静态编译和动态编译的区别
  4. 2.项目管理重要性探讨
  5. Codecov后门事件验证分析
  6. 【22】Vue 之 Vue Devtools
  7. edui 富文本编辑_ueditor集成秀米编辑器
  8. index.jsp中文乱码问题
  9. VMware centos7镜像安装详细步骤
  10. 介绍Google Code Playground
  11. mongodb与mysql优缺点
  12. Dubbo服务调用流程源码分析(服务调提供方)
  13. 流量卡之家:物联网僵尸网络和DDoS攻击:构建网络风险防火墙
  14. OpenHarmony开源鸿蒙学习入门-应用开发之使用eTS语法示例项目讲解
  15. OpenGL地球(自转+贴图)
  16. OpenGL中显示背景贴图
  17. 数学中学生测试软件,欧拉初中数学软件
  18. 浅谈企业数据安全治理
  19. pdfmake生成pdf文件
  20. iOS App集成Apple Pay 编程指南(中国版)

热门文章

  1. Logback 整合 RabbitMQ 实现统一日志输出
  2. linux下使用free命令查看实际内存占用(可用内存)
  3. linwei_211 SVN错误:Attempted to lock an already-locked dir
  4. PDM 导出Excel
  5. HeadFirst设计模式篇四:工厂模式
  6. 如何在修改了默认值之后跟新
  7. New Currency Rate IOS APP 上线
  8. Java快速开发框架LML简介
  9. [转]我认识的189名CCIE的薪水情况
  10. 甲醛、苯、甲苯、二甲苯对人体健康的危害