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不放事件

 

 

 

 

 

 

Opencv 学习笔记之——鼠标,进度条操作的更多相关文章

  1. android学习笔记20——ProgressDialog进度条对话框

    ProgressDialog==>进度条对话框 ProgressDialog本身就代表一个进度条对话框,程序只需要创建ProgressDialog实例,并将其显示出来就是一个进度条对话框:开发者 ...

  2. Android学习笔记_76_Android ProgressBar 进度条

    android 进度条的样式  例1:(默认样式(中等圆形))Xml代码 <ProgressBar      android:id="@+id/progressBar1"   ...

  3. OpenCV学习笔记:矩阵的掩码操作

    矩阵的掩码操作很简单.其思想是:根据掩码矩阵(也称作核)重新计算图像中每个像素的值.掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响.从数学观点看,我们用自己设置的权值,对像素邻 ...

  4. [OpenCV学习笔记2][Mat数据类型和操作]

    [Mat数据类型和基本操作] ®.运行环境:Linux(RedHat+OpenCV3.0) 1.Mat的作用: Mat类用于表示一个多维的单通道或者多通道的稠密数组.能够用来保存实数或复数的向量.矩阵 ...

  5. OpenCV学习笔记(十) 直方图操作

    直方图计算 直方图可以统计的不仅仅是颜色灰度, 它可以统计任何图像特征 (如 梯度, 方向等等).直方图的一些具体细节: dims: 需要统计的特征的数目, 在上例中, dims = 1 因为我们仅仅 ...

  6. opencv学习笔记(五)----图像的形态学操作

    图像的形态学操作有基本的腐蚀和膨胀操作和其余扩展形态学变换操作(高级操作)-----开运算,闭运算,礼帽(顶帽)操作,黑帽操作...(主要也是为了去噪声,改善图像) 形态学操作都是用于处理二值图像(其 ...

  7. OpenCV学习笔记(十一) 轮廓操作

    在图像中寻找轮廓 首先利用Canny算子检测图像的边缘,再利用Canny算子的输出作为 寻找轮廓函数 findContours 的输入.最后用函数 drawContours 画出轮廓.边界Counto ...

  8. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  9. opencv学习笔记(三)基本数据类型

    opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...

随机推荐

  1. Vue学习(一):Vue实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 手动监控Windows端口

    转载自http://blog.51cto.com/ywzhou/1579917 1.监控端口的几个主要Keys:   net.tcp.listen[port] Checks if this port  ...

  3. Python 中的容器 collections

    写在之前 我们都知道 Python 中内置了许多标准的数据结构,比如列表,元组,字典等.与此同时标准库还提供了一些额外的数据结构,我们可以基于它们创建所需的新数据结构. Python 附带了一个「容器 ...

  4. 前端----css总结

    1,权重计算: 权重:id  class  标签--->>>顺序不变 当权重一样时,显示后来设置的 继承下来的标签,权重为0 若权重为0,那么谁描述的近,就显示谁 若权重为0,描述的 ...

  5. hibernate延时加载机制

    延迟加载: 延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作.在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另 ...

  6. HDU 3689 Infinite monkey theorem(DP+trie+自动机)(2010 Asia Hangzhou Regional Contest)

    Description Could you imaging a monkey writing computer programs? Surely monkeys are smart among ani ...

  7. Android问题:could not install *smartsocket* listener;Address already in use

     今天启动genymotion后,发现没有ip地址,运行项目时报错:     可见,没有连接到模拟器,无法运行,而先前说过没有ip,自然而然连接不上,   解决放法:将资源管理器打开,将adb全部退出 ...

  8. Linux建立FTP服务器

    http://blog.chinaunix.net/uid-20541719-id-1931116.html http://www.cnblogs.com/hnrainll/archive/2011/ ...

  9. PokeCats开发者日志(八)

      现在是PokeCats游戏开发的第十四天的中午,很不幸著作权申请又被打回来了.   据说是排版后代码行数还差500行,文档不足十版.我擦,原来他们会自己排版的啊.   只好从项目自带的xml里扣代 ...

  10. PAT 1080 MOOC期终成绩

    https://pintia.cn/problem-sets/994805260223102976/problems/994805261493977088 对于在中国大学MOOC(http://www ...