我如何检测和跟踪使用OpenCV的人?
我有一个静止的相机,指向室内的地方。 人们会在相距约5米的地方走过相机。 使用OpenCV ,我想要检测个体走过去 – 我理想的返回是一个检测到的个人数组,边界矩形。
我看了几个内置的示例:
- 没有一个Python样本真的适用
- C blob跟踪样本看起来很有前景,但不接受实况video,这使testing变得困难。 这也是最复杂的示例,提取相关知识并将其转换为Python API有问题。
- C'motempl'样本也看起来很有前景,因为它可以从后续的video帧中计算出轮廓。 据推测,我可以使用它来find强连通的组件,并提取单个斑点和边界框 – 但我仍然试图找出一种方法来识别在随后的帧中发现的斑点作为相同的斑点。
任何人都可以提供指导或样本做这个 – 最好在Python ?
最新的SVN版本的OpenCV包含基于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
的实现和samples/python/peopledetect.py
为更完整的python示例(都在OpenCV源)。
缺口,
你正在寻找的不是人的检测,而是运动检测。 如果您告诉我们更多关于您正在努力解决/做什么的事情,我们可以更好地回答。 无论如何,有很多方法可以进行运动检测,具体取决于您将如何处理结果。 最简单的就是差分法,然后是阈值法,而一个复杂的法则可能是适当的背景build模 – >前景减法 – >形态学操作 – >连接组件分析,如果需要,接着进行斑点分析。 下载opencv代码并查看示例目录。 你可能会看到你在找什么。 还有一本关于OCV的奥雷利书。
希望这有助于Nand
这显然是一个不平凡的任务。 你将不得不看科学出版物的灵感( 谷歌学者是你的朋友在这里)。 下面是一篇关于人体检测和跟踪的文章: 通过快速均值偏移模式search进行人体跟踪
这与我们作为计算机视觉课程的一部分所做的项目类似,现在我可以告诉你,这是一个很难正确的问题。
你可以使用前景/背景分割,find所有的斑点,然后决定他们是一个人。 问题在于,人们往往走在一起,经过彼此等等,所以一个团队很可能由两个人组成,然后随着他们走,你会看到这个团伙分裂合并。
你将需要一种方法来区分一个人中的多个人。 这不是一个问题,我希望任何人都可以在一个单一的SO职位回答。
我的build议是潜入可用的研究,看看你是否能find任何东西。 考虑到存在这样的产品,问题不是不可解决的:奥托立夫有一种产品,可以在汽车上使用红外摄像机来检测行人,而且我还看到了其他产品,这些产品用于处理进出商店的客户。