Opencv鼠标事件

opencv的鼠标事件主要触及两个函数

回调函数cvSetMouseCallback

void cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse, void* param CV_DEFAULT(NULL));

window_name:鼠标履行的窗口名

on_mouse:每次指定窗口鼠标事件产生时被调用的函数指针

param :传递到回调函数的参数


on_mouse的原型

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

param:传递到cvSetMouseCallback函数调用的参数

x、y:鼠标指针在图象坐标系的坐标

event: CV_EVENT_*变量之1

enum
{
CV_EVENT_MOUSEMOVE =0,//滑动
CV_EVENT_LBUTTONDOWN =1,//左键点击
CV_EVENT_RBUTTONDOWN =2,//右键点击
CV_EVENT_MBUTTONDOWN =3,//中键点击
CV_EVENT_LBUTTONUP =4,//左键放开
CV_EVENT_RBUTTONUP =5,//右键放开
CV_EVENT_MBUTTONUP =6,//中键放开
CV_EVENT_LBUTTONDBLCLK =7,//左键双击
CV_EVENT_RBUTTONDBLCLK =8,//右键双击
CV_EVENT_MBUTTONDBLCLK =9//中键双击
};

flags:是CV_EVENT_FLAG的组合

enum
{
CV_EVENT_FLAG_LBUTTON =1,//左键拖曳
CV_EVENT_FLAG_RBUTTON =2,//右键拖曳
CV_EVENT_FLAG_MBUTTON =4,//中键拖曳
CV_EVENT_FLAG_CTRLKEY =8,//按CTRL
CV_EVENT_FLAG_SHIFTKEY =16,//按SHIFT
CV_EVENT_FLAG_ALTKEY =32//按ALT
};

注意事项

之前用opencv显示窗口时,习惯直接用imshow( winname, mat);,少了先命名1个窗口的进程,没有用到鼠标事件之前并没出现问题,但,当我开始向代码里面加鼠标事件后,运行时却没有响应

void onMouse(int event, int x, int y, int flags, void* param);
int main()
{
cvSetMouseCallback("ok", onMouse, NULL);
imshow("ok",window_image);
return 0;
}
void onMouse(int event, int x, int y, int flags, void* param)
{
if (event == 2)
{
cout<<"heelo"<<endl;
}
if (event == 1)
{
cout<<"world"<<endl;
}
cout<<x<<" "<<y<<endl;
}

由于缺少窗口声明,所以上面这段代码并没有实现响应,所以需要加1行声明。

void onMouse(int event, int x, int y, int flags, void* param);
int main()
{
namedWindow("ok", 1);//命名1个窗口
cvSetMouseCallback("ok", onMouse, NULL);
imshow("ok",window_image);
return 0;
}
void onMouse(int event, int x, int y, int flags, void* param)
{
if (event == 2)
{
cout<<"heelo"<<endl;
}
if (event == 1)
{
cout<<"world"<<endl;
}
cout<<x<<" "<<y<<endl;
}
波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » Opencv鼠标事件

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡