opencv锁定鼠标定位

举报
lqj_本人 发表于 2023/03/14 11:25:58 2023/03/14
【摘要】 opencv锁定鼠标定位

控制鼠标

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()

效果展示

当鼠标出现在窗口中时,即开始跟踪鼠标的位置,并完成位置的实时打印!

b4c687972d3649f4a134ca76da0fce52.gif

完整学习代码

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()

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。