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路由文档笔记

    引入router this.$router 和 router 使用起来完全一样.我们使用 this.$router 的原因是我们并不想在每个独立需要封装路由的组件中都导入路由 可以在任何组件内通过 t ...

  2. OpenStack配置虚拟机vcpu绑定步骤 转至元数据结尾

    . Changed in compute node: 给宿主机预留资源: 宿主机可用cpu:cpuid – cpuid 宿主机可用内存:25G #vim /etc/nova/nova.conf vcp ...

  3. python基础训练营03——字典、集合、判断、循环

    一.字典dict: 相比列表list而言,列表list像一本书,如果要查书中的某一个内容,需要把书从前往后翻一遍,直到找到想要获取的东西:而字典dict,就像现实中的字典一样,通过查找特定的字或者词( ...

  4. pep8介绍

    pep8介绍: PEP8是针对python代码格式而编订的风格指南,采用一致的编码风格可以令代码更加易懂易读! (1)空白: python中空白会影响代码的含义及其代码的清晰程度 使用space(空格 ...

  5. mongoDB 常用操作CRUD

    1.显示所有的数据库 show dbs   2.切换数据库(如果没有数据库,即是创建数据库) use 数据库名称   3.显示所有的表 show tables   4.查看数据库里的表 show co ...

  6. mysql 数据库新增用户

    1.user表中host为%含义: Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1.这里的意思就是说root用户只能通过192.168.1.1的客户 ...

  7. IP数据报格式 及分组转发算法

    ip数据报分首部和数据两部分组成: 首部分为固定部分和可变部分 版本——占 4 位,指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4) 首部长度——占 4 位,可表示的最大数值 是 ...

  8. 对于response.setContentType(MIME)的解释

    response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据.例如web浏览器就是通过MIM ...

  9. 【bzoj2152】聪聪可可 树的点分治

    题目描述 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已 ...

  10. 【bzoj4516】[Sdoi2016]生成魔咒 后缀数组+倍增RMQ+STL-set

    题目描述 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 1.2 拼凑起来形成一个魔咒串 [1,2].一个魔咒串 S 的非空字串被称为魔咒串 S 的生成魔咒. 例如 S=[1,2 ...