opencv-python教程学习系列5-处理鼠标事件

前言

opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍opencv-python处理鼠标事件,坚持学习,共同进步。

系列教程参照OpenCV-Python中文教程

系统环境

系统:win_x64;

python版本:python3.5.2;

opencv版本:opencv3.3.1;

内容安排

1.知识点介绍;

2.测试代码;

具体内容

1.知识点介绍;

鼠标事件使用的包是cv2,函数主要是cv2.setMouseCallback()函数;

一般首先创建鼠标事件回调函数,当鼠标事件发生时就会被执行。

通过鼠标事件获得相对应图像的坐标执行对应的功能。

所有鼠标事件回调函数都有一个统一的格式,不同的是被调用之后的功能。

1.1 查看所有被支持的鼠标事件

1
2
3
import cv2
events = [i for i in dir(cv2) if 'EVENT' in i]
print (events)

鼠标事件包括如下内容:

1
2
3
4
5
6
'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'

1.2 在鼠标双击位置绘制一个圆;

1)定义鼠标事件回调函数;

1
2
3
4
# mouse callback function
def draw_circle(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDBLCLK:
        cv2.circle(img, (x, y), 100, (255, 0, 0), -1)

2)将图像窗口与回调函数绑定;

1
cv2.setMouseCallback('image', draw_circle)

1.3 根据选择的模式在拖动鼠标时绘制矩形,故回调函数包含两个部分;

1)回调函数绘图的步骤:step1,按下左键时记录起始位置坐标;step2,按下左键并移动时根据模式的选择绘制图形;step3,鼠标松开时停止绘图;

2)将回调函数和窗口绑定在一起,同时在循环中将‘m’键与模式转换绑定在一起;

具体代码可参考测试代码;

2. 测试代码;

2.1在图像双击位置画圆;

2.2 选择不同的模式在拖动鼠标时绘制矩形;

参考

1. opencv-python处理鼠标事件

posted on   鹅要长大  阅读(987)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示