本文主要是介绍[openCV]基于Mouse Event的Paint的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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位于特定窗口的位置
这篇关于[openCV]基于Mouse Event的Paint的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!