C++ OpenCV基于颜色分割实现源视频上物体追踪

前言

上一篇中我们学习了《C++ OpenCV使用InRange对HSV颜色进行分割》,本身通过视频中可以看到我们通过颜色把按摩器提取了出来,这次我们基于上一章的成果,在上面实现原视频中的物体标识出来,呈现出追踪的效果。

实现效果视频

实现思路

  1. 对源视频用InRange进行颜色分割

  2. 对分割出来的图像进行形态学操作(开操作去燥)

  3. 然后再进行N闪的膨胀(N为整数,需要自己把握)

  4. 对膨胀后的形态进行查找轮廓

  5. 生成轮廓的外接矩形

  6. 在源图上把外接矩形绘制出来

代码实现

我们还是用上次的那个项目opencv--video2,按照配置属性(VS2017配置OpenCV通用属性),然后在原来的基础上增加一个矩形的定义,如下图红框所示:

对源视频用InRange进行颜色分割

对分割出来的图像进行开操作(先腐蚀后膨胀)

再进行4次的膨胀操作,这一步的作用是因为视频中部门蓝色由于反光的问题会认为是白色,所以在颜色提取的时候会变成好几个色块,这样我们通过膨胀的操作把分散的色块融合到一起,具体的膨胀次数可以自己测试一下。我是直接填的4效果还不错。

根据膨胀后的开关获取最小外接矩形

上面我们用到了一个DealRect的函数,我们重点看一下这个函数,首先在文件最上面定义了DealRect的函数

然后我们再写DealRect的实现方法

最后我们在源图上绘制出外接矩形并把图像显示出来

这样整个效果就完成了,生成的结果就是文章开始时的视频显示效果,下面是视频中的截图

-END-

Vaccae的往期经典


OpenCV

《C++ OpenCV案例实战---卡号获取

《C++ OpenCV案例实战---卡片截取(旋转取卡)

《C++ OpenCV案例实战---卡片截取(附代码)

《C++ OpenCV实战---获取数量


Android

《Android利用SurfaceView结合科大讯飞修改语音实别UI

《Android关于语音识别的功能实现分析(一)---结构化思维》

《Android关于语音识别的功能实现分析(二)---语义解析》

《Android根据类生成签名字符串

《Android碎片化布局fragment的实战应用


.Net C#

《C#自定义特性(Attribute)讲解与实际应用

《C#根据类生成签名字符串(附DEMO下载地址)


数据库及其它

《Oracel存储过程写报表实战》

《Delphi轮播视频和图片程序(用于双屏显示程序)

《SQL随机增加销售数据的脚本编写(附脚本下载地址)


长按下方二维码关注微卡智享

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vaccae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值