PythonOpenCV-图形用户界面-响应鼠标事件
OpenCV可在用户触发鼠标事件时,调用鼠标回调函数完成事件处理。
1. 鼠标回调函数
函数原型
def mouseCallback(event, x, y, flags, param): ...
参数说明
mouseCallback:自定义函数名称
event:调用时传递给函数的鼠标事件对象
x 和 y :触发鼠标事件时,鼠标指针在窗口中的坐标(x, y)
flags:触发鼠标事件时,鼠标拖动或键盘按键操作,参数可设置为下列常量:
cv2.EVENT_LBUTTONDBLCLK:双击鼠标左键
cv2.EVENT_LBUTTONDOWN:按下鼠标左键
cv2.EVENT_LBUTTONUP:释放鼠标左键
cv2.EVENT_MBUTTONDBLCLK:双击鼠标中键
cv2.EVENT_MBUTTONDOWN:按下鼠标中键
cv2.EVENT_MBUTTONUP:释放鼠标中键
cv2.EVENT_MOUSEHWHEEL:滚动鼠标中键(正负值表示向左或向右滚动)
cv2.EVENT_MOUSEMOVE:鼠标移动
cv2.EVENT_MOUSEWHEEL:滚动鼠标中键(正负值表示向前或向后滚动)
cv2.EVENT_RBUTTONDBLCLK:双击鼠标右键
cv2.EVENT_RBUTTONDOWN:按下鼠标右键
cv2.EVENT_RBUTTONUP:释放鼠标右键
cv2.EVENT_FLAG_ALTKEY:按下【Alt】键
cv2.EVENT_FLAG_CTRLKEY:按下【Ctrl】键
cv2.EVENT_FLAG_SHIFTKEY:按下【Shift】键
cv2.EVENT_FLAG_LBUTTON:按住鼠标左键拖动
cv2.EVENT_FLAG_MBUTTON:按住鼠标中建拖动
cv2.EVENT_FLAG_RBUTTON:按住鼠标右键拖动
param:传递给回调函数的其他数据
2. 绑定鼠标回调函数
函数原型
cv2.setMouseCallback(wname, mouseCallback)
参数说明
wname:图像窗口名称
mouseCallback:鼠标回调函数名称
3. 代码示例
import cv2 as cv import numpy as np img = np.zeros((200, 320, 3), np.uint8)+255 # 创建白色背景图 # 定义鼠标回调函数 def draw(event, x, y, flag, param): if event == cv.EVENT_LBUTTONDBLCLK: cv.circle(img, (x, y), 15, (255, 0, 0), -1) # 双击鼠标左键,画填充圆 elif event == cv.EVENT_RBUTTONDBLCLK: cv.rectangle(img, (x, y), (x + 20, y + 20), (0, 0, 255), -1) # 双击鼠标右键画填充矩形 cv.namedWindow('Drawing') cv.setMouseCallback('Drawing', draw) while True: cv.imshow("Drawing", img) key = cv.waitKey(1) if key == 27: # 按下【Esc】键退出 break cv.destroyAllWindows()
运行结果

/*-------------------------------------------------------------------------------------------------------
笔者说明:
该笔记来源于本人学习Python + OpenCv时的资料,
分享出来只是为了供大家学习,并且为了自己以后想要用的时候方便寻找。
时间:2023年4月15日
------------------------------------------------------------------------------------------------------------*/

PythonOpenCV-图形用户界面-响应鼠标事件
浙公网安备 33010602011771号