前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ OpenCV基于颜色分割实现源视频上物体追踪

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

作者头像
Vaccae
发布2019-07-25 11:21:20
1.5K1
发布2019-07-25 11:21:20
举报
文章被收录于专栏:微卡智享微卡智享

前言

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

实现效果视频

https://v.qq.com/x/page/a13585r8ph8.html

实现思路

  1. 对源视频用InRange进行颜色分割
  2. 对分割出来的图像进行形态学操作(开操作去燥)
  3. 然后再进行N闪的膨胀(N为整数,需要自己把握)
  4. 对膨胀后的形态进行查找轮廓
  5. 生成轮廓的外接矩形
  6. 在源图上把外接矩形绘制出来

代码实现

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

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

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

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

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

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

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

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

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

-END-

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档