首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

小林的OpenCV基础课 4

依然放一张2018绘师100人展的作品,来自绘师Rellakinoko

在上一话的结尾,我们提到了要使用神奇的工具(康娜酱默默地拿出了 鼠标 滑动条 还有画笔)

嗯,以小林的性格,绝对不会告诉你这一话要讲简单绘图、鼠标事件和滑动条的(づ ̄ 3 ̄)づ

用OpenCV画画

画画什么的 康娜酱最喜欢了

任务:教会康娜酱画点、直线、矩形、圆形和写字。

用到的函数:zeros,line,rectangle,circle和putText。

函数原型:

img:画布

pt1,pt2:直线段起始点和终止点

color:线条颜色,BGR空间

thickness:线宽

linetype:线型,有cv.FILLED,cv.LINE_4, cv.LINE_8,cv.LINE_AA。

img:画布

pt1,pt2:矩形的左上角和右下角

剩余参数同上

center:圆心

radius:半径

其他参数同上。

哇,这个函数有好多的参数,其实呢,一般我们只关心一下几个参数

img:画布

text:要显示的文字,字符串形式

org:文本框左下角的坐标

fontFace:字体,具体有哪些字体同学们可查阅API

fontScale:缩放倍数

下面,康娜酱 要 画画了!

鼠标 是什么?

学过Java的同学知道,Java中有个叫侦听器的东西,用来侦测事件。在OpenCV的鼠标操作中也是靠鼠标事件和回调函数完成的,鼠标的移动、点击左键或右键都会产生一个特定的事件,然后由回调函数完成我们想要实现的功能。

回调函数就像一个侦听器,随时侦测鼠标的动作。

那么有哪些鼠标事件呢?我们可以在Python Console中输入以下命令查看(注意环境哦):

任务:移动鼠标并按下Ctrl键 画 圆?

我们来写一个回调函数,功能是 双击鼠标左键画一个圆,就叫draw_circle吧:

然后“激活”回调函数:

这里用到了setMouseCallback来“激活”回调函数,函数原型:

windowname:窗口名,即我们要在哪个窗口使用鼠标回调函数

onMouse:回调函数的函数名(不是字符串啊喂)

param:通常可选参数小林是不会讲的,但是这里提一下,这个参数可以被传送到回调函数中哦,如果没有需要传递的参数,这里可以不写,但在回调函数中一定要写上

现在再来讲下回调函数的flags和param参数:

flags:对应一系列事件,这些事件为,当event发生时是否按下了Ctrl、Shift或Alt键,对应的事件名可用上面命令行中的命令显示

param:需要回传的参数,亦可以元组和列表的形式传入

好的,奉上完整代码:

滑动条什么的

来,跟小林一起念:Trackbar。(づ ̄ 3 ̄)づ

滑动条的实现类似上文鼠标事件,也需要回调函数,相应的创建并“激活”函数为createTrackbar。

函数原型:

trackbarName:滑动条名字,运行时会显示出来的

windowName:窗口名字

value:滑动条初始值

count:滑动条的调节范围,0~count

onChange:回调函数名

若需要获取滑动条当前值,则需要用函数getTrackbarPos(),函数原型:

任务:下面小林写一段RGB调色盘的代码,帮助同学们理解RGB色彩空间。敲黑板了,OpenCV中是BGR而不是RGB!

这一话的示例代码已经同步到了Github

搜索Kobayashi_OpenCV_py

在Class2 GUI Core Features里

关注这个神奇的公众号

与小林一起出发

如需转载请后台小窗小林哦

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180507G0RDDD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券