【问题标题】:Tracking an object via OpenCV通过 OpenCV 跟踪对象
【发布时间】:2014-12-12 13:15:24
【问题描述】:

我正在尝试使用 OpenCV 和 Python 跟踪对象(在本例中为球)。例如,我正在使用这个视频:https://www.youtube.com/watch?v=xmQZiSOiD1c

我需要的是在不将视频的其他部分检测为球的情况下跟踪球。按颜色跟踪在这里不起作用。出于同样的原因,寻找圈子也很棘手。

关于这个问题的好方法的想法?

【问题讨论】:

  • 在计算机视觉文献中搜索概率跟踪(例如粒子滤波)。不要指望它很容易用于硬背景或不清晰的前景。
  • 会的。有什么具体的文献可以推荐吗?
  • 我发现 Perez 的“Color-BasedProbabilisticTracking”是一篇关于粒子过滤的好论文。有关基础知识,请参阅 wikipedia 和 google,有一些不错的教师幻灯片

标签: python python-2.7 opencv object tracking


【解决方案1】:

可以先对球进行简单的跟踪:

  1. 使用透视单应性隔离桌上足球桌,即构建桌子的平面图以更轻松地跟踪 2D 位置。

  2. 使用一种简单的方法进行一系列观察(猜测),使用颜色和/或运动去除背景。

任何概率类型的跟踪(包括粒子过滤)都需要进行一系列观察。进行高质量的观察是产生良好跟踪结果的关键。

这里有一些source code,它对您提供的视频和results 进行了基本的霍夫圆分析。请注意,对于球的过去和当前位置,绿点并不是一个糟糕的近似值。下一步是对颜色数据使用粒子滤波,并通过简单的霍夫分析计算出位置。您可能还想在当前位置周围使用搜索窗口来过滤掉任何误报。

此外,向图像中注入一些噪声可以改善跟踪结果,因为它为特征检测器提供了错误的边缘来锁定。

在投入大量时间使用 python 让一个好的粒子过滤器工作之前,我发现 TLDCMT 跟踪器的性能非常适合这种工作。

【讨论】:

  • 哇,这太棒了!我只是有点困惑,为什么你几乎没有得到任何不是球的结果,而我却经常发现错误的目标。我会研究 TLD/CMT,但我必须使用 Python。当我学习 C++ 时,我会研究它:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
  • 2012-11-17
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多