Opencv 学习笔记之——鼠标,进度条操作
Opencv中提供一个鼠标调用的函数,SetMouseCallback()函数,它配合一个回调函数来实现鼠标操作的功能。
首先看一下SetMouseCallback的函数原型:
c++: void setMousecallback(const string& winname, MouseCallback onMouse, void* userdata=0)
下面具体介绍一下各个参数的含义:
void setMousecallback
(
const string& winname, //这个参数为你的鼠标操作的窗口名称,例如你指定的窗口叫"阿三"
MouseCallback onMouse, //在你指定的"阿三"这个窗口里发生鼠标操作时,被调用的函数指针
void* userdata //当你调用上面的函数指针时,如果你有一个参数(例如变量"阿猫")要给调用函数,就是这货了
)
下面要介绍那个回调函数的原型:
void on_Mouse(int event, int x, int y, int flags, void* param)
下面介绍一下各个参数的含义:
void on_Mouse
(
int event, //这个参数是 CV_EVENT_*变量之一(用来标识鼠标的各种操作。移动,左键按下,右键按下等)
int x, int y, //鼠标指在图像坐标系上的坐标,(注意一点是图像的坐标系,不是窗口坐标系)
int flags, //是CV_EVENT_FLAG的组合
void* param //用户定义的要给回调函数的调用的参数(上面的"阿猫");
);
Event代表的是鼠标回传的事件号码,每当鼠标有动作,Event就会回传一个整数信息到on_Mouse(),也顺便回传鼠标移动的坐标,flags代表的是拖曳事件,而鼠标事件的执行可以细分的分类为
定义的CV_EVENT_*
#define CV_EVENT_MOUSEMOVE 0 //鼠标滑动
#define CV_EVENT_LBUTTONDOWN 1 //左键点击
#define CV_EVENT_RBUTTONDOWN 2 //右键点击
#define CV_EVENT_MBUTTONDOWN 3 //中键点击
#define CV_EVENT_LBUTTONUP 4 //左键放开
#define CV_EVENT_RBUTTONUP 5 //右键放开
#define CV_EVENT_MBUTTONUP 6 //中键放开
#define CV_EVENT_LBUTTONDBLCLK 7 // 左键双击
#define CV_EVENT_RBUTTONDBLCLK 8 //右键双击
#define CV_EVENT_MBUTTONDBLCLK 9 //中键双击
定义的CV_EVENT_FLAG_*
#define CV_EVENT_FLAG_LBUTTON 1 // 左键拖曳
#define CV_EVENT_FLAG_RBUTTON 2 //右键拖曳
#define CV_EVENT_FLAG_MBUTTON 4 // 中键拖曳
#define CV_EVENT_FLAG_CTRLKEY 8 //按Ctrl不放事件
#define CV_EVENT_FLAG_SHIFTKEY 16 // 按Shift不放事件
#define CV_EVENT_FLAG_ALTKEY 32 // 按Alt不放事件
最新文章
- getParameterMap()的返回值为Map<;String, String[]>;,从其中取得请求参数转为Map<;String, String>;的方法如下:
- Linux防火墙规则的查看、添加、删除和修改
- hadoop-ha QJM架构应用故障总结
- TLCL中英对照版
- Android 内存管理分析(四)
- C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码
- eclipse开发Groovy代码,与java集成,maven打包编译
- Javac编译原理 《深入分析java web 技术内幕》第四章
- 微信导出群记录V3.0
- Tensorflow训练神经网络
- angularJs的一次性数据绑定:双冒号::
- HDUOJ---1996汉诺塔VI
- 【C++对象模型】使用gcc、clang和VC++显示C++类的内存布局
- Redhat安装配置VNC服务器
- spark-sql做ETL时遇到的两个问题
- 洛谷【P1757】通天之分组背包
- 【点分治】【map】【哈希表】hdu4670 Cube number on a tree
- py---------面向对象进阶
- namenode启动成功,但是不能通过web访问50070问题
- android note【转】
热门文章
- [转][赞]Android开发者必知的开发资源
- C++学习003-#define 自定义宏
- Python Flask之旅
- 为什么mysqld启动报错
- LeetCode 215——数组中的第 K 个最大元素
- spring mvc:实现给Controller函数传入map参数
- Nginx+tomcat+redis集群共享session实现负载均衡
- http请求的过程
- [HDU6304][数学] Chiaki Sequence Revisited-杭电多校2018第一场G
- ASP.NET页面之间传值Application(5)