OpenCV中的鼠标操作
在OpenCV中鼠标有4种类型的操作,分别是:按下(Down),放开(Up),移动(Move),双击(DoubleClick),鼠标在窗口中操作的时候会发生其中一个或几个操作。
而这些操作都是由OpenCV内部定义的回调函数:
void (*CvMouseCallback )(int event, int x, int y, int flags, void* param)完成的。
1、event:其中event表示事件,回调过程中发生的是鼠标按下或放开、移动等操作。
2、x,y:表示鼠标此刻的在窗口中的位置信息。
3、flags:表示拖拽、组合键等标志,与event搭配使用
4、param:表示传入或传出的数据
只要将操作方法定义成CvMouseCallback即可实现任何形式的鼠标操作
Event的可选项及含义 |
||
宏 |
值 |
功能 |
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_LBUTTON |
1 |
左键拖曳 |
CV_EVENT_FLAG_RBUTTON |
2 |
右键拖曳 |
CV_EVENT_FLAG_MBUTTON |
4 |
中键拖曳 |
CV_EVENT_FLAG_CTRLKEY |
8~15 |
Ctrl不放事件 |
CV_EVENT_FLAG_SHIFTKEY |
16~31 |
Shift不放事件 |
CV_EVENT_FLAG_ALTKEY |
32~39 |
Alt不放事件 |
然后使用cvSetMouseCallback()进入鼠标操作的入口方法进行回调,但需要传入一个handler,也就是事件驱动的子程序名称,Handler必须是CvMouseCallback函数指针类型.
cvSetMouseCallback("窗口名称",自行定义子程序名称,自行定义子程序的传入传出参数);