响应鼠标事件

简介: 【5月更文挑战第11天】响应鼠标事件。

OpenCV可在用户触发鼠标事件时,调用鼠标回调函数完成事件处理。
鼠标回调函数的基本格式如下。
def mouseCallback(event,x,y,flags,param):…
参数说明如下。
mouseCallback为自定义函数名称。
event为调用时传递给函数的鼠标事件对象。
x和y为触发鼠标事件时,鼠标指针在窗口中的坐标(x,y)。
flags为触发鼠标事件时,鼠标拖动或键盘按键操作,参数可设置为下列常量。
cv2.EVENT_LBUTTONDBLCLK:双击鼠标左键。
cv2.EVENT_LBUTTONDOWN:按下鼠标左键。
cv2.EVENT_LBUTTONUP:释放鼠标左键。
cv2.EVENT_MBUTTONDBLCLK:双击鼠标中键。
cv2.EVENT_MBUTTONDOWN:按下鼠标中键。
cv2.EVENT_MBUTTONUP:释放鼠标中键。
cv2.EVENT_MOUSEHWHEEL:滚动鼠标中键(正、负值表示向左或向右滚动)。
cv2.EVENT_MOUSEMOVE:鼠标移动。
cv2.EVENT_MOUSEWHEEL:滚动鼠标中键(正、负值表示向前或向后滚动)。
cv2.EVENT_RBUTTONDBLCLK:双击鼠标右键。
cv2.EVENT_RBUTTONDOWN:按下鼠标右键。
cv2.EVENT_RBUTTONUP:释放鼠标右键。
cv2.EVENT_FLAG_ALTKEY:按下【Alt】键。
cv2.EVENT_FLAG_CTRLKEY:按下【Ctrl】键。
cv2.EVENT_FLAG_LBUTTON:按住鼠标左键拖动。
cv2.EVENT_FLAG_MBUTTON:按住鼠标中键拖动。
cv2.EVENT_FLAG_RBUTTON:按住鼠标右键拖动。
cv2.EVENT_FLAG_SHIFTKEY:按下【Shift】键。
param为传递给回调函数的其他数据。
cv2.setMouseCallback()用于为图像窗口绑定鼠标回调函数,其基本格式如下。
cv2.setMouseCallback(wname, mouseCallback)
参数说明如下。
wname为图像窗口的名称。
mouseCallback为鼠标回调函数名称。

示例代码如下。

test3-10.py:响应鼠标事件

import numpy as np
import cv2
img=np.zeros((200,320,3), np.uint8)+255 #创建一幅白色图像
def draw(event,x,y,flag,param): #定义鼠标回调函数
if event==cv2.EVENT_LBUTTONDBLCLK:
cv2.circle(img,(x,y),20,(255,0,0),-1) #双击鼠标左键时画圆
elif event==cv2.EVENT_RBUTTONDBLCLK:
cv2.rectangle(img,(x,y),(x+20,y+20),(0,0,255),-1) #双击鼠标右键时画矩形
cv2.namedWindow('drawing') #命名图像窗口
cv2.setMouseCallback('drawing',draw) #为窗口绑定回调函数
while(True):
cv2.imshow('drawing',img) #显示图像
k = cv2.waitKey(1)
if k == 27: #按【Esc】键时结束循环
break
cv2.destroyAllWindows()

目录
相关文章
|
6月前
页面监听键盘事件
页面监听键盘事件
|
6月前
[Qt5] 鼠标响应事件和计时器事件
[Qt5] 鼠标响应事件和计时器事件
61 0
|
前端开发
14、事件类型(鼠标事件、键盘事件、触屏事件)
14、事件类型(鼠标事件、键盘事件、触屏事件)
158 0
|
容器 C#
3D场景中的鼠标响应事件
原文:3D场景中的鼠标响应事件 今天要讲的是3D场景中的鼠标响应事件的处理,首先Button的响应是大家熟知的,只要加上一个click事件,然后写一个响应的处理时间就行了。对于二维平面上的一些控件也很好处理,比如在跳棋那篇文章中,就是用了ellipse的鼠标左右键按下的事件响应函数。
931 0