OpenCV学习笔记 HigiGUI库3.鼠标操作

15 篇文章 0 订阅
4 篇文章 0 订阅

setMouseCallback()

void setMouseCallback(const string &winname, MouseCallback onMouse, void* userdata=0);
winname

窗口的名字

onMouse

回调函数,每次鼠标事件发生时被调用的函数指针
这个函数的原型大概形式为

void func(int event, int x, int y, int flags, void* param);

event
EVENT_+变量之一
鼠标使用消息如下(去掉CV_)

#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 中键双击
flags:
#define CV_EVENT_FLAG_LBUTTON 1 左键拖曳
#define CV_EVENT_FLAG_RBUTTON 2 右键拖曳
#define CV_EVENT_FLAG_MBUTTON 4 中键拖曳
#define CV_EVENT_FLAG_CTRLKEY 8 (8~15)按Ctrl不放事件
#define CV_EVENT_FLAG_SHIFTKEY 16 (16~31)按Shift不放事件
#define CV_EVENT_FLAG_ALTKEY 32 (32~39)按Alt不放事件

x, y
鼠标指针在图像坐标系中的坐标值

flags
EVENT_FLAG的组合

param
用户定义的传递到SetMouseCallback函数调用的参数

userdata

用户定义的传递到回调函数的参数,默认值为0

Test

#include "opencv2/highgui.hpp"

#define WIN_NAME "WIN_FOR_TEST"
using namespace cv;

void on_MouseHandle(int event, int x, int y, int flags, void* param);

int sx,sy,ex,ey;
bool isDown=0;
int main()
{
    namedWindow(WIN_NAME);
    Mat Test_img = imread("test.png");
    imshow(WIN_NAME, Test_img);
    setMouseCallback(WIN_NAME, on_MouseHandle);
    waitKey(0);
    return 0;
}

void on_MouseHandle(int event, int x, int y, int flags, void* param)
{
    switch(event)
    {
        case EVENT_LBUTTONDOWN :
        {
            isDown=1;
            sx=x;
            sy=y;
            printf("sx:%d sy:%d ex:%d ey:%d\n",sx,sy,ex,ey);
            break;
        }
        case EVENT_LBUTTONUP :
        {
            isDown=0;
            
            break;
        }
        case EVENT_MOUSEMOVE :
        {
            if(isDown)
            {
                ex=x;
                ey=y;
                printf("sx:%d sy:%d ex:%d ey:%d\n",sx,sy,ex,ey);
            }
        }
    }
}

参考

1.《OpenCV3编程入门》
2. OpenCV中响应鼠标消息 (转)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值