Python OpenCV setMouseCallback 回调函数,取经之旅第 13 天
你内心肯定有某种火焰,将你和其它人区别
本篇博客将与你一起学习 OpenCV 中的 setMouseCallback,它也被称作回调函数。
为何要学习 setMouseCallback
昨天学习图像标记之后,橡皮擦瞬间想到的就是能否手动标记,检索了一下资料,发现这部分内容可以从 setMouseCallback
回调函数学起。
学习任何函数,建议先去官方手册查看一下基本语法,哪怕是英文的也没有关系,看参数命名和返回值,可以猜出大概用法。
本函数在官方手册,并没有找到关于 Python 相关的声明,官方地址
满脸问号,不会被遗漏了吧。
既然没有,那就只能依赖 C++ 的语法,推测一下了。橡皮擦给你准备的语法格式如下:
相关参数说明如下:
windowName:窗口的名字;
onMouse:鼠标响应函数,回调函数。
userdata:传给回调函数的参数
上面三个参数,最重要的是第二个,鼠标回调函数,该函数在鼠标事件发生时执行。
鼠标事件可以是与鼠标相关的任何内容,如左键点击,左键向上,右键点击等。
回调函数格式
上文提及的第二个参数,一般都会遵循下述函数原型,即 MouseCallback onMouse 的函数原型。
上述 on_mouse
可以为任意函数名,其它参数说明如下:
event 是
CV_EVENT_*
变量之一,CV_EVENT
见下表;x 和 y 是鼠标在图像坐标系的坐标(不是窗口坐标系);
flags 是
CV_EVENT_FLAG
的组合;param 是用户定义的传递到 setMouseCallback 函数调用的参数。
鼠标事件的种类可以通过下述代码获取。
输出下述内容:
event
具体说明如下:
EVENT_MOUSEMOVE 0 //滑动
EVENT_LBUTTONDOWN 1 //左键点击
EVENT_RBUTTONDOWN 2 //右键点击
EVENT_MBUTTONDOWN 3 //中键点击
EVENT_LBUTTONUP 4 //左键放开
EVENT_RBUTTONUP 5 //右键放开
EVENT_MBUTTONUP 6 //中键放开
EVENT_LBUTTONDBLCLK 7 //左键双击
EVENT_RBUTTONDBLCLK 8 //右键双击
EVENT_MBUTTONDBLCLK 9 //中键双击
flags
具体说明如下:
EVENTFLAGLBUTTON 1 //左键拖曳
EVENTFLAGRBUTTON 2 //右键拖曳
EVENTFLAGMBUTTON 4 //中键拖曳
EVENTFLAGCTRLKEY 8 //(8~15)按 Ctrl 不放
EVENTFLAGSHIFTKEY 16 //(16~31)按 Shift 不放
EVENTFLAGALTKEY 32 //(32~39)按 Alt 不放
编码环节
准备知识已经学习完毕,接下来是应用环节。
下述案例,实现在河北地图上进行画圆操作,左键按下实心圆,右键按下空心圆。
运行结果如下图所示,注意圆圈。
OpenCV 尾声
1 个小时又过去了,对 Python OpenCV 相关的知识点,你掌握了吗?
空闲之余,可以订阅橡皮擦的爬虫百例课程学习爬虫知识。
**想学 Python 爬虫,可以订阅橡皮擦专栏哦~
** 🈲🈲🈲🈲 点击发现惊喜 🈲🈲🈲🈲
博主 ID:梦想橡皮擦,希望大家<font color="red">点赞</font>、<font color="red">评论</font>、<font color="red">收藏</font>。
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/7f9b8030aa5bd6efedca6f99a】。文章转载请联系作者。
评论