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. 「个人训练」Can you solve this equation?(HDU-2199)

    题意与分析 纯粹水题.本来想做下放松心情的,结果还是被坑了qaq 重点就是在浮点误差.比较左右的下次就直接上1e-10,别看着题目说1e-4然后给个-5,结果暴wa.气傻了..... 代码 #incl ...

  2. wirehshark解密IPSEC流量

    wireshark解密IPSEC加密过的流量 题目是安恒二月月赛题目:简单的流量分析 1.首先会发现很多esp类型的流量 我们不知道密钥就没有办法解密,猜测密钥肯定是在流量包里面的. 加密流量在786 ...

  3. 51单片机实现定时器中断0-F

    #include <reg51.h> #define uint unsigned int #define uchar unsigned char sfr P0M0 = 0x94; sfr ...

  4. tomcat web.log 系统日志记录文件过大问题修改

    目前各系统都是记录所有的日志,产生日志文件太大,按照如下设置修改log4j.properties文件:其中橙色部分为系统名称,例如water-scada系统,名称可以为scada. #Sun Jun ...

  5. C++ 递归读取目录下所有文件

    windows版本 #include <iostream> #include <io.h> #include <fstream> #include <stri ...

  6. 【原创】Sagger使用

    Swagger使用 1. Spring MVC配置文件中的配置 <mvc:annotation-driven/> <context:component-scan base-packa ...

  7. 列数不固定时怎么使用el-tabel展示数据

    <el-table :data="contents" stripe> <el-table-column v-for="(item, index) in ...

  8. 在delphi中如何解决空格的问题。。。。烦死 了。。。。

    我每次从数据库里面取数据出来和Edit里面的进行比较的时候总是会受到空格的困扰...老是干扰我...如果我用trim 所有都做去掉所有的空格那么这样就非常麻烦又繁琐..有没有什么方法可以忽略空格的.. ...

  9. 【bzoj4052】[Cerc2013]Magical GCD 暴力

    题目描述 给出一个长度在 100 000 以内的正整数序列,大小不超过 10^12.  求一个连续子序列,使得在所有的连续子序列中,它们的GCD值乘以它们的长度最大. 样例输入 1 5 30 60 2 ...

  10. Jprofiler分析WebSphere(配置WebSphereagent代理)

    一.   Windows+WebSphere+Jprofiler9 我们自己的windows机器监控本地的WebSphere,应该为服务器配置监控代理,供Jprofiler连接使用,具体步骤如下: 1 ...