当前位置: 首页 > 编程笔记 >

使用Python和OpenCV捕获鼠标单击事件

壤驷德宇
2023-03-14
本文向大家介绍使用Python和OpenCV捕获鼠标单击事件,包括了使用Python和OpenCV捕获鼠标单击事件的使用技巧和注意事项,需要的朋友参考一下

使用的模块:

在本文中,我们将使用Python-openCV(cv2)和NumPy模块。

Python-opencv(cv2):

Python-opencv(cv2)是一个python库,它将帮助我们解决开源计算机视觉问题。

NumPy:

Numpy代表数值Python。该库用于科学计算。在本文中,我们将使用此模块创建空白的黑色图像。

我们如何下载这些模块?

下载这些模块的一般方法:

  • python-opencv(cv2):pip安装opencv-python

  • numpy:安装numpy

  • Pycharm用户:Pycharm用户可以转到项目解释器并从那里安装此模块。

我们将在本文中做什么?
在本文中,我们将检查鼠标单击事件,我们将在NumPy的帮助下创建一个空白图像,此后,当我们单击左侧按钮时,它将在图像上创建一个圆圈,当我们单击右侧按钮时,还将在图像上创建任何颜色的圆圈。这样,我们将检查鼠标的鼠标单击事件。

我们将在本文中使用的重要功能:

  1. np.zeros((<size with layer>),np.uint8):函数将创建一个空白图像。

  2. cv2.setMouseCallback(<Image Frame>,<Event Capturing Function>): 此函数将检查鼠标单击功能,并根据事件捕获功能执行以下操作。

程序:

# 导入模块
import cv2 ,numpy as np

# 设置窗口名称
window="Nhooo.com"

# 创建空白图像
# 图像尺寸为(512,512),分为3层
image=np.zeros((512,512,3),np.uint8)

# 将名称设置为窗口
cv2.namedWindow(window)
# 创建事件捕获功能
def capture_event(event,x,y,flags,params):
    # event =鼠标单击
    # x,y是光标的位置
    # 检查事件是否右键单击
    if event==cv2.EVENT_RBUTTONDOWN:
        # 在该位置创建一个圆
        # 半径为30,颜色为红色
        cv2.circle(image,(x,y),30,(0,0,255),-1)
    # 检查事件是否被单击
    if event==cv2.EVENT_LBUTTONDBLCLK:
        # 在该位置创建一个圆
        # 半径30和颜色的绿色
        cv2.circle(image,(x,y),30,(0,255,0),-1)
    #  检查事件是否正在滚动
    if event==cv2.EVENT_MBUTTONDBLCLK:
        # 在该位置创建一个圆
        # 半径为30,颜色为蓝色
        cv2.circle(image,(x,y),30,(255,0,0),-1)

# 设置鼠标功能
cv2.setMouseCallback(window,capture_event)
# 创建一个循环,直到我们按下按钮
while True:    
    cv2.imshow(window,image)
    if cv2.waitKey(1)==13:
        break
cv2.destroyAllWindows()

输出:

使用Python和OpenCV捕获鼠标单击事件

这样,我们可以借助Python-opencv(cv2)捕获鼠标单击事件。

 类似资料:
  • 有没有办法用java捕获双击鼠标事件后的图像?我只能在鼠标释放双击事件时捕获图像。但捕获图像不是双击事件后的图像。

  • 目标 学习在OpenCV中处理鼠标事件 你将学习这些函数:cv2.setMouseCallback() 简单的演示 在这里,我们创建一个简单的应用程序,无论我们在哪里双击它,都会在图像上绘制一个圆圈。 首先我们创建一个鼠标事件发生时执行的回调函数。鼠标事件可以是任何与鼠标有关的东西,例如左键,左键,左键双击等。它给我们每个鼠标事件的坐标(x,y)。有了这个活动和地点,我们可以做任何我们喜欢的事情。

  • 问题内容: 我正在尝试在matplotlib中实现一个简单的鼠标单击事件。我希望绘制一个图,然后使用鼠标选择积分的上限和下限。到目前为止,我可以将坐标打印到屏幕上,但不能将其存储以供以后在程序中使用。我也想在第二次单击鼠标后退出与该图的连接。 下面是当前绘制并打印坐标的代码。 我的问题: 如何存储图形到列表的坐标?即点击= [xpos,ypos] 是否可以获取两组x坐标以便对该行的该部分进行简单的

  • 我正在使用Python 2.7和OpenCV 2.4。9 我需要捕获显示给用户的当前帧,并将其加载为Python中的cv::Mat对象。 你们知道一种快速递归的方法吗? 我需要像下面的例子中所做的那样,从网络摄像头递归地捕获Mat帧: 在本例中,它使用了VideoCapture类来处理从网络摄像头捕获的图像。 用视频捕捉。read()新帧总是被读取并存储到Mat对象中。 我可以将“打印屏幕流”加载

  • 问题内容: 在我的三个按钮上,鼠标=中键单击和=右键单击。 两键鼠标就是这种情况吗? 谢谢 问题答案: 为了避免任何歧义,请使用SwingUtilities中的实用程序方法:

  • 本文向大家介绍jQuery实现单击和鼠标感应事件,包括了jQuery实现单击和鼠标感应事件的使用技巧和注意事项,需要的朋友参考一下 1.实现单击事件动态交替 之前我们讲到了toggleClass(),对于单击事件而言,jQuery同样提供了动态交替的toggle()方法,这个方法接受两个参数,两个参数均为监听函数,在click事件中交替使用。 例子:点击事件的动态交互。 2.实现鼠标感应 在css