【问题标题】:OpenCV Human Body TrackingOpenCV 人体追踪
【发布时间】:2013-10-20 16:56:38
【问题描述】:

您好,我是 OpenCV 新手,我正在尝试使用放置在固定位置的摄像头来实现人体跟踪。我做了一些研究,发现了方向梯度直方图方法,但根据我的理解,它的作用是检测而不是跟踪。因此,我想知道在 OpenCV 上实现人体检测和跟踪的最简单方法是什么?

P/S:我找到了这个video,这正是我想要实现的。

【问题讨论】:

  • 您可以接受一个足够好的答案。 (点击左侧的复选标记有答案)

标签: c++ opencv object-detection video-tracking


【解决方案1】:

您也可以尝试使用 HAAR 级联进行人体检测。只需使用CascadeClassifier::CascadeClassifier() 加载级联,然后使用CascadeClassifier::detectMultiScale() 获取给定图像中检测到对象(身体)的区域。调整给detectMultiScale()的参数以加快和提高检测的准确性。

你可以找到一堆级联 here 包括一个用于身体检测的级联。

看看这些 SO 帖子:

【讨论】:

  • 感谢您的详细建议,但如果不是太麻烦,我还有一个后续问题。您建议的方法是否通过快速重新检测来“模拟”跟踪,因为我想在实时视频源上为我正在跟踪的每个人(如上面的视频中所示)放置一个唯一标识符。可以用你的方法吗?再次感谢。
  • @user2900552 使用 HAAR 或 LBP 级联,您将只能检测每个相机帧内与所需对象相似的区域。所以是的,您在每一帧中“重新检测”,从而可以进行跟踪。为所需对象的实例分配唯一 id 需要使用主成分分析或线性判别分析或“特征检测和特征匹配”。找一本书叫《用实用的计算机视觉项目掌握opencv》。它有你需要的 c++ 食谱。
  • 感谢您的友好回复。我肯定会尝试你的建议,但现在我真的需要先增加 OpenCV。再次感谢。
  • 您指向bunch of cascades 的链接无效。能否请您更新新链接?
【解决方案2】:

您可以使用带有“人”模型的 HOG 检测器或潜在 svm 检测器来获取人的边界框,然后跟踪该人。

可以通过以下方式跟踪人的质心: 测量新的质心位置。测量它的速度。使用当前帧位置和速度预测下一帧质心的位置。然后检查质心的新测量值是否接近预测值。如果是,那么它与前一帧中的人是同一个人,如果不是,那么它是一个新人进入该帧。

也许您应该跟踪边界框而不是质心。您的帧速率足够高,也许您可​​以只绘制边界框而忘记跟踪。

【讨论】:

    猜你喜欢
    • 2017-10-05
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多