OpenCV处理鼠标响应事件
- 学习使用 OpenCV 处理鼠标响应事件
- 函数:cv2.setMouseCallback()
一、定义鼠标回调函数
-
格式都是统一的,不同的是调用后的功能
def mouse_callback(event,x,y,flags,param): -
定义完成后需要注册该回调函数
cv2.setMouseCallback(windowName,mouse_callback)
你可以通过执行下列代码查看所有被支持的鼠标事件
import cv2
events=[i for i in dir(cv2) if 'EVENT'in i]
print(events)
['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']
鼠标事件如下:
鼠标事件标志
二、简单演示(双击画圆)
- 首先创建一个鼠标事件回调函数,但鼠标事件发生是他就会被执行。
- 鼠标事件可以是鼠标上的任何动作,比如左键按下,左键松开,左键双击等。
- 通过鼠标事件获得与鼠标对应的图片上的坐标。根据这些信息我们可以做任何我们想做的事,比如绘制坐标、标注图像等等。
所有的鼠标事件回调函数都有一个统一的格式,他们所不同的地方仅仅是被调用后的功能。我们的鼠标事件回调函数只用做一件事:在双击过的地方绘制一个圆圈。
import cv2
import numpy as np
#mouse callback function
def draw_circle(event,x