opencv的鼠标操作是以中断的方式进行,即鼠标作一次动作(点击、移动)则进入中断函数。
一、中断函数设置步骤如下:
1.定义中断函数:
void my_mouse_call_back(int event, int x,int y,int flags,void* param){函数内容}
2.在主程序中注册回调函数
cvSetMouseCallback(const char* windowname,
CvMouseCallback my_mouse_call_back,
void* param);
第一个参数指定了回调函数需要注册到的窗口,第二个参数为回调函数,第三个参数为用户可以自己使用的参数。
二、中断函数定义
参数event为鼠标事件类型
参数x,y为触发事件时的鼠标位置。
flag 参数没用过,想用看书。
三、void* param 参数的使用
这个参数挺有用的,以不定格式指针传入回调函数。
若param 为int格式,则先定义int a变量,再以指针指向a, int* p_a=&a;
然后,可以调用函数声明函数
cv::setMouseCallback("window",my_mouse_callback,p_a);
在回调函数中获取void* param 的方法:
将param的格式转换成所需格式int