OpenCV Python 处理鼠标事件
OpenCV能够通过回调函数注册各种与鼠标有关的事件。这样做是为了根据鼠标事件的类型触发某种用户定义的操作。
序号 | 鼠标事件和描述 |
---|---|
1 | cv.EVENT_MOUSEMOVE 当鼠标指针在窗口上移动时发生。 |
2 | cv.EVENT_LBUTTONDOWN 表示鼠标左键被按下。 |
3 | cv.EVENT_RBUTTONDOWN 表示鼠标右键被按下。 |
4 | cv.EVENT_MBUTTONDOWN 表示鼠标中键被按下。 |
5 | cv.EVENT_LBUTTONUP 当鼠标左键释放时发生。 |
6 | cv.EVENT_RBUTTONUP 当鼠标右键释放时发生。 |
7 | cv.EVENT_MBUTTONUP 表示鼠标中键释放。 |
8 | cv.EVENT_LBUTTONDBLCLK 当鼠标左键双击时发生此事件。 |
9 | cv.EVENT_RBUTTONDBLCLK 表示鼠标右键双击。 |
10 | cv.EVENT_MBUTTONDBLCLK 表示鼠标中键双击。 |
11 | cv.EVENT_MOUSEWHEEL 正数为向前滚动,负数为向后滚动。 |
要在鼠标事件上触发函数,需要通过 setMouseCallback() 函数进行注册。命令如下−
这个函数将事件的类型和位置传递给回调函数进行进一步处理。
示例1
以下代码在显示图片作为背景的窗口上,每当左键双击事件发生时,绘制一个圆圈。
输出
运行上述程序,并在随机位置双击。类似的输出将会出现 –
示例2
根据用户输入(1、2或3),下面的程序会交互地绘制矩形、线段或圆形:
在鼠标左键按下和松开的坐标之间,如果按下了‘1’,则在窗口表面上绘制一个矩形。
如果用户选择2,则使用坐标作为端点绘制一条线。
选择3绘制一个圆形,位置在鼠标松开的坐标处。
在成功执行上述程序之后,以下图像将是输出结果。