Opencv 学习笔记之——鼠标操作画出感兴趣区域



本文为原创作品,转载请注明出处

欢迎关注我的博客:http://blog.csdn.net/hit2015springhttp://www.cnblogs.com/xujianqing/

作者:晨凫追风

Opencv中提供一个鼠标调用的函数,SetMouseCallback()函数,它配合一个回调函数来实现鼠标操作的功能。

首先看一下SetMouseCallback的函数原型:

c++:void setMousecallback(

                                              const string& winname,

                                               MouseCallback on_Mouse,

                                                 void*userdata=0

                                                  )

 

下面具体介绍一下各个参数的含义:

void  setMousecallback

(

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值