opencv锁定鼠标定位的实现

 更新时间:2023年02月16日 09:37:01   作者:lqj_本人  
本文主要介绍了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()

效果展示

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

完整学习代码

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

到此这篇关于opencv锁定鼠标定位的实现的文章就介绍到这了,更多相关opencv锁定鼠标定位内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Python的Flask框架中构建Web表单的教程

    在Python的Flask框架中构建Web表单的教程

    Flask框架中自带一个Form表单类,通过它的子类来实现表单将相当惬意,这里就为大家带来Python的Flask框架中构建Web表单的教程,需要的朋友可以参考下
    2016-06-06
  • 使用Python编写一个桌面便签应用

    使用Python编写一个桌面便签应用

    ChatGPT的编程能力也不差,本文将一步一步提出要求,让ChatGPT根据我们的要求,编写出一个可用的,可打包运行的桌面便签,感兴趣的可以了解一下
    2023-06-06
  • Python使用DPKT实现分析数据包

    Python使用DPKT实现分析数据包

    dpkt项目是一个Python模块,主要用于对网络数据包进行解析和操作,z这篇文章主要为大家介绍了python如何利用DPKT实现分析数据包,有需要的可以参考下
    2023-10-10
  • 使用Python实现WebSocket服务器与客户端通信功能

    使用Python实现WebSocket服务器与客户端通信功能

    WebSocket 是一种基于 TCP 协议的通信协议,能够在客户端与服务器之间进行全双工(双向)通信,相比传统的 HTTP 协议,WebSocket 可以实现实时数据的传输,我通过 Python 实现一个简单的 WebSocket 服务器,并使其与客户端进行通信,需要的朋友可以参考下
    2024-12-12
  • Python实现检索指定网段内所有的数据库服务器

    Python实现检索指定网段内所有的数据库服务器

    这篇文章主要为大家详细介绍了如何使用Python实现检索指定网段内所有的数据库服务器,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2025-02-02
  • 使用Python进行数据清洗和预处理的实现代码

    使用Python进行数据清洗和预处理的实现代码

    Python作为数据科学领域的热门编程语言,提供了丰富的库和工具来处理和清洗数据,本文将介绍如何使用Python进行数据清洗和预处理,并提供相应的代码示例,需要的朋友可以参考下
    2024-05-05
  • python中@staticmethod方法的使用

    python中@staticmethod方法的使用

    这篇文章主要介绍了python中@staticmethod方法的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Python自定义进程池实例分析【生产者、消费者模型问题】

    Python自定义进程池实例分析【生产者、消费者模型问题】

    这篇文章主要介绍了Python自定义进程池,结合实例分析了Python使用自定义进程池实现的生产者、消费者模型问题,需要的朋友可以参考下
    2016-09-09
  • 数据清洗之如何用一行Python代码去掉文本中的各种符号

    数据清洗之如何用一行Python代码去掉文本中的各种符号

    我们在处理文本的时候往往需要对标点符号进行处理,下面这篇文章主要给大家介绍了关于数据清洗之如何用一行Python代码去掉文本中的各种符号的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • Python装饰器的函数式编程详解

    Python装饰器的函数式编程详解

    本文向大家详细介绍了Python装饰器的函数式编程的相关资料,需要的朋友可以参考下
    2015-02-02

最新评论