Opencv 学习笔记之——鼠标操作画出感兴趣区域
2016-04-01 15:34
447 查看
本文为原创作品,转载请注明出处
欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/
作者:晨凫追风
Opencv中提供一个鼠标调用的函数,SetMouseCallback()函数,它配合一个回调函数来实现鼠标操作的功能。
首先看一下SetMouseCallback的函数原型:
c++:void setMousecallback(
const string& winname,
MouseCallback on_Mouse,
void*userdata=0
)
下面具体介绍一下各个参数的含义:
voidsetMousecallback
(
conststring& winname, //这个参数为你的鼠标操作的窗口名称,
//例如你指定的窗口叫“阿三”
MouseCallback on_Mouse, //在你指定的“阿三”这个窗口里发生鼠标操作时,被调用的函数指针
void*userdata //当你调用上面的函数指针时,如果你有一个参数
//(例如变量“阿猫”)要给调用函数,就是这货了
)
下面要介绍那个回调函数的原型:
void on_Mouse(int event, int x, int y, int flags, void* param)
下面介绍一下各个参数的含义:
void on_Mouse
(
intevent, //这个参数是CV_EVENT_*变量之一
//(用来标识鼠标的各种操作。移动,左键按下,右键按下等)
intx, int y, //鼠标指在图像坐标系上的坐标,
//(注意一点是图像的坐标系,不是窗口坐标系)
intflags, //是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不放事件
本文为原创作品,转载请注明出处
欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/
作者:晨凫追风
Opencv中提供一个鼠标调用的函数,SetMouseCallback()函数,它配合一个回调函数来实现鼠标操作的功能。
首先看一下SetMouseCallback的函数原型:
c++:void setMousecallback(
const string& winname,
MouseCallback on_Mouse,
void*userdata=0
)
下面具体介绍一下各个参数的含义:
voidsetMousecallback
(
conststring& winname, //这个参数为你的鼠标操作的窗口名称,
//例如你指定的窗口叫“阿三”
MouseCallback on_Mouse, //在你指定的“阿三”这个窗口里发生鼠标操作时,被调用的函数指针
void*userdata //当你调用上面的函数指针时,如果你有一个参数
//(例如变量“阿猫”)要给调用函数,就是这货了
)
下面要介绍那个回调函数的原型:
void on_Mouse(int event, int x, int y, int flags, void* param)
下面介绍一下各个参数的含义:
void on_Mouse
(
intevent, //这个参数是CV_EVENT_*变量之一
//(用来标识鼠标的各种操作。移动,左键按下,右键按下等)
intx, int y, //鼠标指在图像坐标系上的坐标,
//(注意一点是图像的坐标系,不是窗口坐标系)
intflags, //是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不放事件
相关文章推荐
- Tomcat发布多个项目时抛的webAppRootKey错误
- linux权限集中管理和行为日志审计
- apache禁止公网IP访问的配置
- CentOS 7 基础配置与安装Webmin
- ubuntu 14.04 编译安装 nginx
- adb shell中设置android系统内部环境变量!
- Linux 同步方法剖析--内核原子,自旋锁和互斥锁
- linux内核——进程管理
- Django Nginx+uwsgi 安装配置
- apache RewriteRule
- Linux进程间通信——消息队列:
- Linux 原始套接字--myping的实现
- linux 标准IO缓冲机制探究
- linux 进程(二) --- 进程的创建及相关api
- Apache部署django项目
- Linux环境进程间通信(一):管道及有名管道
- Linux内核源码分析--内核启动之(5)Image内核启动(rest_init函数)(Linux-3.0 ARMv7)
- Linux的i2c驱动详解
- Linux开机启动过程详细分析
- [原创]Linux系统启动过程分析