opencv锁定鼠标定位的实现
lqj_本人 人气:0控制鼠标
opencv允许我们对窗口的鼠标动作做出响应:
setMouseCallback(winname,callback,userdata)
1.winname是窗口的名字
2.callback是回调函数
3.userdata是给回调函数的参数
callback(event,x,y,flags,userdata)回调函数必须包含这5个参数:
1.event:事件(鼠标拖动,左键,右键等)
2.x,y:点击鼠标的坐标点
3.flags:主要用于组合键
4.userdata:上面的setMouseCallback的userdata
鼠标事件:
- EVENT_MOUSEMOVE 0 鼠标移动
- EVENT_LBUTTONDOWN 1 按下鼠标左键
- EVENT_RBUTTONDOWN 2 按下鼠标右键
- EVENT_MBUTTONDOWN 3 按下鼠标中键
- EVENT_LBUTTONUP 4 左键释放
- EVENT_RBUTTONUP 5 右键释放
- EVENT_MBUTTONUP 6 中键释放
- EVENT_LBUTTONDBLCLK 7 左键双击
- EVENT_RBUTTONDBLCLK 8 右键双击
- EVENT_MBUTTONDBLCLK 9 中键双击
- EVENT_MOUSEWHEEL 10 鼠标滚轮上下滚动
- EVENT_MOUSEHWHEEL 11 鼠标左右滚动
flags:
- EVENT_FLAG_LBUTTON 1 按下左键
- EVENT_FLAG_RBUTTON 2 按下右键
- EVENT_FLAG_MBUTTON 4 按下右键
- EVENT_FLAG_CRTLKEY 8 按下ctrl键
- EVENT_FLAG_SHIFTKEY 16 按下shift键
- EVENT_FLAG_ALTKEY 32 按下alt键
导入相应的库
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()
效果展示
当鼠标出现在窗口中时,即开始跟踪鼠标的位置,并完成位置的实时打印!
完整学习代码
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()
加载全部内容