2013-10-20 31 views
5

您好我是OpenCV的新手,我试图使用放置在固定位置的相机来实现人体跟踪。我做了一些研究,并且遇到了面向方向梯度直方图方法,但基于我的理解,它所做的是检测而不是跟踪。因此,我想知道在OpenCV上实现人体检测和跟踪的最简单方法是什么?OpenCV人体跟踪

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

+0

可以接受的答案这是不够好。 (点击左边的复选标记回答) – samkhan13

回答

4

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

你可以找到一串瀑布here包括一个用于身体检测。

看看这些所谓的帖子:

+0

感谢您的详细建议,但如果它不太麻烦,我有一个后续问题。您是否建议通过快速重新检测来“模拟”跟踪的方法,因为我希望为每个正在跟踪的人员(如上面的视频中所示)提供实时视频馈送中的唯一标识符。有可能使用你的方法吗?再次感谢。 – user2900552

+0

@ user2900552使用HAAR或LBP级联,您将只能检测每个摄像机帧内与所需对象相似的区域。所以是的,你在每一帧中“重新检测”,从而可以进行跟踪。为所需对象的实例分配唯一ID需要使用主成分分析或线性判别分析或“特征检测和特征匹配”。寻找一本名为“用实际的计算机视觉项目掌握opencv”的书。它有你所需要的C++收益。 – samkhan13

+0

感谢您的回复。我肯定会尝试你的建议,但现在我真的需要首先加强OpenCV。再次感谢。 – user2900552

1

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

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

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