使用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)捕获鼠标单击事件。