如何使用OpenCV检测和跟踪人员?
computer-vision
opencv
python
5
0

我有一台固定的相机,指向室内区域。人们将走过相机,距离相机约5米。使用OpenCV ,我想检测走过的人-我的理想回报是一组检测到的具有矩形边界的人。

我看了几个内置示例:

  • 没有一个Python示例真正适用
  • C blob跟踪示例看起来很有希望,但不接受实时视频,这使测试变得困难。它也是最复杂的示例,使得提取相关知识并将其转换为有问题的Python API。
  • C “ motempl”样本看起来也很有希望,因为它可以从后续视频帧中计算出轮廓。大概我可以使用它来找到强连接的组件并提取单个斑点及其边界框-但是我仍然试图找出一种方法来将在后续帧中发现的斑点识别为同一斑点。

有没有人能够提供指导或示例来进行此操作-最好是在Python中

参考资料:
Stack Overflow
收藏
评论
共 4 个回答
高赞 时间 活跃

缺口,

您要找的不是人检测,而是运动检测。如果您向我们详细介绍了您要解决的问题/我们将做的更好。无论如何,有许多方法可以进行运动检测,具体取决于要对结果进行的处理。最简单的方法是先进行差分,然后进行阈值处理,而复杂的操作可能是适当的背景建模->前景减法->形态学操作->连通成分分析,然后根据需要进行斑点分析。下载opencv代码并查看示例目录。您可能会看到想要的东西。另外,有一本关于OCV的Oreilly书。

希望这会有所帮助,南德

收藏
评论

OpenCV的最新SVN版本包含(未记录)基于HOG的行人检测的实现。它甚至带有预训练的检测器和python包装器。基本用法如下:

from cv import *

storage = CreateMemStorage(0)
img = LoadImage(file)  # or read from camera

found = list(HOGDetectMultiScale(img, storage, win_stride=(8,8),
                padding=(32,32), scale=1.05, group_threshold=2))

因此,您可以只在每帧中运行检测器并直接使用其输出,而不是进行跟踪。

有关实现的信息,请参见src/cvaux/cvhog.cpp ;对于更完整的python示例(请参见OpenCV源代码),请参见samples/python/peopledetect.py

收藏
评论

显然,这是一项艰巨的任务。您必须研究科学出版物以获得灵感( Google学术搜索是您的朋友)。这是一篇关于人体检测和追踪的论文: 通过快速均值漂移模式搜索进行人体追踪

收藏
评论

这类似于我们在“计算机视觉”课程中所做的一个项目,我现在可以告诉您,这是一个很难解决的问题。

您可以使用前景/背景分割,找到所有斑点,然后确定它们是一个人。问题在于,由于人们倾向于走到一起,彼此走过去等等,它无法很好地工作,所以一个斑点可能很好地由两个人组成,然后您会看到这些斑点在行走时分裂并合并。

您将需要一种在一个斑点中区分多个人的方法。我希望这不是问题,任何人都可以在一个SO帖子中回答。

我的建议是深入研究可用的研究,看看您是否能在其中找到任何东西。考虑到存在可以做到这一点的产品,这个问题并非无法解决:Autoliv有一款产品可以使用汽车上的红外摄像头检测行人,我还看到了其他产品,可以统计进入和退出商店的顾客。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号