目录
Mouse_Callback(event, x, y, flags, param)
cv2.setMouseCallback("mouse", Mouse_Callback)
img = np.zeros((640, 1280, 3), np.uint8)
一、提前准备
1、树莓派4B 及 64位系统
2、提前安装opencv库 以及 numpy库
二、代码详解
1、定义一个鼠标回调函数
# coding=utf-8
import cv2
import numpy as np
#鼠标回调函数
def Mouse_Callback(event, x, y, flags, param):
#左右键输出提示与键值,其余按键事件就不例举了,直接打印定义的键值了
if event == cv2.EVENT_LBUTTONDOWN:
print("L_Button Down {}\r\n".format(event))
elif event == cv2.EVENT_RBUTTONDOWN:
print("R_Button Down {}\r\n".format(event))
else:
print(event)
#输出鼠标坐标\Flags\userdata
print("Mouse position : X :"+str(x)+" Y :"+str(y)+"\r\n")
print("Flags : {}".format(flags))
print(f"Userdata is{param}\r\n\r\n")
Mouse_Callback(event, x, y, flags, param)
- 功能: 这是一个用户定义的回调函数,用于处理鼠标事件。
- 参数:
event
: 表示发生的鼠标事件类型(例如左键按下、右键按下等)。可能的事件常量包括:cv2.EVENT_LBUTTONDOWN
: 左键按下。cv2.EVENT_RBUTTONDOWN
: 右键按下。- 其他鼠标事件类型会直接打印事件代码。
x
: 鼠标事件发生时的x坐标。y
: 鼠标事件发生时的y坐标。flags
: 表示事件发生时的各种状态(例如按住Shift键、Ctrl键等)。param
: 传递给回调函数的用户数据(userdata),在此代码中未使用。
2、主函数
#创建窗口
cv2.namedWindow("mouse",cv2.WINDOW_NORMAL)
cv2.resizeWindow("mouse",1280,640)
#设置鼠标回调
cv2.setMouseCallback("mouse",Mouse_Callback)
#显示窗口与背景
img=np.zeros((640,1280,3),np.uint8)
while True:
cv2.imshow("mouse",img)
key=cv2.waitKey(1)
if key&0XFF==ord('q'):
break
#释放所有资源
cv2.destroyAllWindows()
cv2.setMouseCallback("mouse", Mouse_Callback)
- 功能: 为指定窗口设置鼠标事件的回调函数。
- 参数:
"mouse"
: 窗口的名称。Mouse_Callback
: 鼠标事件的回调函数。当在窗口上发生鼠标事件时,OpenCV会调用这个函数。
img = np.zeros((640, 1280, 3), np.uint8)
- 功能: 创建一个全黑的图像,该图像用于在窗口中显示。
- 参数:
(640, 1280, 3)
: 图像的尺寸。640是高度,1280是宽度,3表示图像的通道数(即RGB)。np.uint8
: 数据类型,表示图像中的每个像素值为0到255的整数。
三、运行现象
四、完整代码
# coding=utf-8
import cv2
import numpy as np
#鼠标回调函数
def Mouse_Callback(event, x, y, flags, param):
#左右键输出提示与键值,其余按键事件就不例举了,直接打印定义的键值了
if event == cv2.EVENT_LBUTTONDOWN:
print("L_Button Down {}\r\n".format(event))
elif event == cv2.EVENT_RBUTTONDOWN:
print("R_Button Down {}\r\n".format(event))
else:
print(event)
#输出鼠标坐标\Flags\userdata
print("Mouse position : X :"+str(x)+" Y :"+str(y)+"\r\n")
print("Flags : {}".format(flags))
print(f"Userdata is{param}\r\n\r\n")
#创建窗口
cv2.namedWindow("mouse",cv2.WINDOW_NORMAL)
cv2.resizeWindow("mouse",1280,640)
#设置鼠标回调
cv2.setMouseCallback("mouse",Mouse_Callback)
#显示窗口与背景
img=np.zeros((640,1280,3),np.uint8)
while True:
cv2.imshow("mouse",img)
key=cv2.waitKey(1)
if key&0XFF==ord('q'):
break
#释放所有资源
cv2.destroyAllWindows()
五、完整代码贴出
(持续更新中)opencv树莓派4B入门系列笔记1~5完整工程源码资源-CSDN文库
持续更新中……