OpenCV鼠标事件

2025年3月17日 | 阅读 3 分钟

鼠标作为画笔

OpenCV 提供了一个功能,可以使用鼠标作为画笔或绘图工具。 无论窗口屏幕上发生什么鼠标事件,它都可以绘制任何东西。 鼠标事件可以是左键按下、左键抬起、双击等。它为我们提供了每个鼠标事件的坐标 (x,y)。 通过使用这些坐标,我们可以绘制任何我们想要的东西。 要获取所有可用事件的列表,请在终端中运行以下代码

上面的代码将返回 OpenCV 支持的所有鼠标事件的列表。

输出

['EVENT_FLAG_ALTKEY', 'EVENT_FLAG_CTRLKEY', 'EVENT_FLAG_LBUTTON', 'EVENT_FLAG_MBUTTON', 'EVENT_FLAG_RBUTTON', 'EVENT_FLAG_SHIFTKEY', 'EVENT_LBUTTONDBLCLK', 'EVENT_LBUTTONDOWN', 'EVENT_LBUTTONUP', 'EVENT_MBUTTONDBLCLK', 'EVENT_MBUTTONDOWN', 'EVENT_MBUTTONUP', 'EVENT_MOUSEHWHEEL', 'EVENT_MOUSEMOVE', 'EVENT_MOUSEWHEEL', 'EVENT_RBUTTONDBLCLK', 'EVENT_RBUTTONDOWN', 'EVENT_RBUTTONUP']

绘制圆形

要在窗口屏幕上绘制一个圆,我们首先需要使用 cv2.setMouseCallback() 函数创建一个鼠标回调函数。 它具有一种特定的格式,在任何地方都保持不变。 我们的鼠标回调函数通过双击绘制一个圆来提供便利。 考虑以下程序


OpenCV Mouse Event

在上面的代码中,我们首先创建了一个黑色窗口屏幕,鼠标事件发生在该屏幕上。 当我们双击黑色窗口时,它将绘制一个圆,正如我们在回调 draw_circle() 函数中定义的那样。

绘制矩形和曲线

我们可以在窗口屏幕上绘制任何形状。 通过拖动鼠标来绘制矩形或圆形(取决于我们选择的模型),就像在画图应用程序中一样。 我们考虑这样一个例子:我们创建了一个包含两个部分的鼠标回调函数。 第一部分是绘制矩形,另一部分是绘制圆。 让我们看看给定的例子,以更具体地理解它

输出

OpenCV Mouse Event

在上面的程序中,我们创建了两个鼠标回调函数。 它与 OpenCV 窗口绑定。 在 while 循环中,我们为键“m”设置了一个键盘绑定,以便在矩形和曲线之间切换。


下一个主题OpenCV 模板匹配