python鼠标碰撞_Python+opencv第5节鼠标响应事件,pythonopencv,第五节

本文介绍了如何使用Python的OpenCV库处理鼠标事件。通过`cv2.setMouseCallback()`设置鼠标回调函数,当发生如左键双击(EVENT_LBUTTONDBLCLK)、按下ALT键拖动鼠标(EVENT_FLAG_ALTKEY)等事件时,进行特定的图像操作,如绘制圆或矩形。示例代码展示了如何实现这一功能。
摘要由CSDN通过智能技术生成

#查看 cv2 有哪些被支持的事件

import cv2

import numpy as np

dir_cv2 = dir((cv2))

print(type(dir_cv2))

print(len(dir_cv2))

events = [i for i in dir(cv2) if 'EVENT' in i]

print(len(events))

print(events)

'''

18个事件

['EVENT_FLAG_ALTKEY', 'EVENT_FLAG_CTRLKEY', 'EVENT_FLAG_LBUTTON', 'EVENT_FLAG_MBUTTON', 'EVENT_FLAG_RBUTTON', 'EVENT_FLAG_SHIFTKEY',

'EVENT_LBUTTONDBLCLK', 'EVENT_LBUTTONDOWN', 'EVENT_LBUTTONUP', 'EVENT_MBUTTONDBLCLK', 'EVENT_MBUTTONDOWN', 'EVENT_MBUTTONUP',

'EVENT_MOUSEHWHEEL', 'EVENT_MOUSEMOVE', 'EVENT_MOUSEWHEEL', 'EVENT_RBUTTONDBLCLK', 'EVENT_RBUTTONDOWN', 'EVENT_RBUTTONUP']

'''

# 用到的函数

# def setMouseCallback(windowName, onMouse, param=None)

# cv2.setMouseCallback()

# 鼠标回调函数

# 这里注意,回调函数一定是要有五个参数

# 这里event 参数是事件 响应 EVENT_*事件的 (但是不响应 EVENT_FALG_*事件)

# x, y 参数是鼠标的坐标

# flags 参数是有没有其他特殊控制,比如在按左键的时候,按了Ctrl,Shift,Alt键等,参数也是刚刚上面的EVENT列表中的,通过事件名可以找到对应flags

# flags 参数是相应 EVENT_FLAG_* 的事件名

# param 参数是 setMouseCallback 的第三个参数

def mouse_call_back_fun(event, x, y, flags, param):

# print(f'tpye(parma) = {type(param)}') #这里 输出

if event == cv2.EVENT_LBUTTONDBLCLK:

cv2.circle(param[0], (x, y), param[1], (255, 255, 0), -1)

if flags == cv2.EVENT_FLAG_ALTKEY: # 按下alt键,拖动鼠标

cv2.rectangle(param[0], (x, y), (x + param[1], y + param[1]), (0, 255, 0), 3)

img = np.zeros((512, 512, 3), np.uint8)

cv2.namedWindow('mouse_call_back')

cv2.setMouseCallback('mouse_call_back', mouse_call_back_fun, [img, 20]) #这里通过设置 param参数,传递了 img 和 一个整数给回调函数

while(True):

cv2.imshow('mouse_call_back', img)

if cv2.waitKey(20) & 0xFF == 27:

break

cv2.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值