1.关于Mouse Event
本文可能与图像处理不是有太大的关联,是openCV的HighGUI中关于Mouse Event的一些学习与练习,可能更偏向于编程吧。之前的程序中,也常常会使用cvWaitKey()
去等待键盘的动作。与之相同的,Mouse Event也算是一个很典型的Callback机制了,对于Mouse Event的设置openCV中需要调用以下函数去实现。
void cvSetMouseCallback(const char* window_name,
CvMouseCallback on_mouse,
void* param=NULL )
const char* window_name
当在特定的窗口下Mouse Event被触发的话,会调用Callback函数。CvMouseCallback on_mouse
这里放置Callback函数void* param=NULL
这里可以放置一个任意的参数,可以为NULL。若程序中有需要调用别的参数的时候,可以由这里转交给Callback函数。
对于上述的Callback函数,需要使用以下这种结构去进行申明。
void mouse_paint_callback(int event,
int x,
int y,
int flags,
void* param);
int event
表示Enent事件的类型。(由下表给出,尝试使用下表格)
Event | Value | 说明 |
---|---|---|
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 | 中键双击 |
int x, int y
Mouse Event触发瞬间,Mouse位于特定窗口的位置