opencv-- 使用鼠标绘制矩形并截取和保存矩形区域图像

鼠标操作属于用户接口设计,以前一直使用Qt来做,但是如果只需要简单的鼠标,键盘操作,直接调用opencv库的函数也未尝不可,鼠标操作之前已经接触很多了,在MFC,QT,OpenGL,等等中,理论主要就是两点,一是监控鼠标操作,鼠标点击,移动,松开,然后通过mouse_event识别判断出那一种鼠标的操作,根据不同的操作然后进行处理,二是在主函数中加入鼠标的回调函数,将鼠标操作与程序的窗口绑定。

                                              第一节 函数介绍

       暂时只接触了两个关于opencv2鼠标响应操作的函数,下面分别介绍一下:

    1.1 回调函数

      opencv2.4.5中,提供的鼠标回调函数是 setMouseCallback,函数声明如下:

  1. CV_EXPORTS void setMouseCallback(const string& winname, MouseCallback onMouse, void* userdata = 0);  
     函数参数介绍

            const string& winname,windows视窗名称,对名为winname的视窗进行鼠标监控。

            MouseCallback onMouse,鼠标响应处理函数,监听鼠标的点击,移动,松开,判断鼠标的操作类型,并进行响应的函数处理。

            void* userdata = 0 鼠标响应处理函数的ID,与鼠标相应处理函数相匹配就行,暂时只用到默认为0的情况。

     函数使用实例:

  1. namedWindow("img");  
  2. setMouseCallback("img",on_mouse,0);  

    1.2 鼠标响应处理函数

       opencv2.4.5中,鼠标相应处理函数一般默认形参和返回参数,函数形式如下:

  1. void on_mouse(int event,int x,int y,int flags,void *ustc)  

      函数参数介绍:

      int event,鼠标操作时间的整数代号,在opencv2.4.5中,event鼠标事件总共有10中,从0-9依次代表如下:

Event:

  1. #define CV_EVENT_MOUSEMOVE 0             滑动  
  2. #define CV_EVENT_LBUTTONDOWN 1           左键点击  
  3. #define CV_EVENT_RBUTTONDOWN 2           右键点击  
  4. #define CV_EVENT_MBUTTONDOWN 3           中间点击  
  5. #define CV_EVENT_LBUTTONUP 4             左键释放
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值