点赞 + 关注 + 收藏 = 学会了
在使用 OpenCV 进行图像处理时,有时需要与图像进行交互,例如选择感兴趣区域(ROI)、标注关键点、调整参数、获取图片指定位置的颜色值等。OpenCV 提供了鼠标事件支持,可以在图像窗口中通过鼠标实现丰富的交互功能。
用到的方法是 cv2.setMouseCallback(window_name, on_mouse, param=None)
,用这个方法监听鼠标在指定窗口里做了什么。
本文可在公众号「德育处主任」免费阅读
window_name
:需要绑定鼠标事件的窗口名称。on_mouse
:回调函数。在这个函数里可以知道用户用鼠标做了什么操作。param
:传递给回调函数的额外参数,可以不传。也可以传你需要的内容,比如传递图像数据到回调函数中,让回调函数可以访问或修改图像。
其中,回调函数(on_mouse
)需要按照以下形式定义:
def on_mouse(event, x, y, flags, param):
# event: 当前的鼠标事件类型。
# x, y: 鼠标事件发生时的坐标。
# flags: 事件相关的附加信息(按下键盘时的修饰键状态,比如按下shift健的同时鼠标在图片上有操作)。
# param: 通过 setMouseCallback 传递的额外参数。
OpenCV 提供了多种鼠标事件(event
),以下是常见类型:
枚举值 | 数字值 | 描述 |
---|---|---|
cv2.EVENT_MOUSEMOVE |
0 | 鼠标移动 |
cv2.EVENT_LBUTTONDOWN |
1 | 鼠标左键按下 |
cv2.EVENT_RBUTTONDOWN |
2 | 鼠标右键按下 |
cv2.EVENT_MBUTTONDOWN |
3 | 鼠标中键按下 |
cv2.EVENT_LBUTTONUP |
4 | 鼠标左键释放 |
cv2.EVENT_RBUTTONUP </ |