OpenCV允许我们对窗口上的鼠标动作做出响应.回调函数,就是执行以后会执行这个函数
cv2.setMouseCallback(winname, callback, userdata) 写一个,主要写回调就行了
winname是窗口的名字, callback是回调函数, userdata是给回调函数的参数.
def mouse_callback(event, x, y, flags, userdata)格式固定
callback(event, x, y, flags, userdata)回调函数必须包含这5个参数. 函数名要和上面一样即可
event是事件(鼠标移动, 左键, 右键等), x,y是点鼠标的坐标点, flags主要用于组合键, userdata就是上面的setMouseCallback的userdata,传参用的
- import cv2
- import numpy as np
-
-
- def mouse_callback(event, x, y, flags, userdata):
- print(event, x, y, flags, userdata)
-
- cv2.namedWindow('mouse', cv2.WINDOW_NORMAL)
- cv2.resizeWindow('mouse', 640, 360)
-
- # 设置鼠标回调函数
- cv2.setMouseCallback('mouse', mouse_callback, '123')
-
- # 显示窗口和背景
- # 生成全黑的图片
- img = np.zeros((360, 640, 3), np.uint8)
- while True:
- cv2.imshow('mouse', img)
- key = cv2.waitKey(1)
- if key & 0xFF == ord('q'):
- break
-
- cv2.destroyAllWindows()