如何使用OpenCV检测和跟踪人员?

Nic*_*son 35 python opencv motion-detection computer-vision

我有一个静止的相机,指向室内区域.人们将走过相机,距离它约5米.使用OpenCV,我想检测走过的人 - 我理想的回归是一组检测到的个体,带有边界矩形.

我看了几个内置示例:

  • 没有Python样本真正适用
  • ç斑点跟踪样品看起来很有希望,但不接受现场视频,这使得检测困难.它也是最复杂的样本,使得提取相关知识并将其转换为Python API存在问题.
  • ç "motempl"样本也看起来很有希望,因为它计算在随后的视频帧的一个剪影.据推测,我可以使用它来查找强连接组件并提取单个blob及其边界框 - 但我仍然试图找出一种方法来识别后续帧中发现的blob作为相同的blob.

是否有人能够提供指导或样本 - 最好是在Python中

Mar*_*tin 27

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))
Run Code Online (Sandbox Code Playgroud)

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

请参阅src/cvaux/cvhog.cpp实现和samples/python/peopledetect.py更完整的python示例(两者都在OpenCV源中).


小智 5

缺口,

您正在寻找的不是人物检测,而是运动检测.如果您告诉我们更多关于您要解决/做的事情,我们可以更好地回答.无论如何,根据您对结果的处理方式,有很多方法可以进行运动检测.最简单的是差分,然后进行阈值处理,而复杂的可以是适当的背景建模 - >前景减法 - >形态运算 - >连通分量分析,如果需要则进行blob分析.下载opencv代码并查看samples目录.你可能会看到你在寻找什么.此外,还有一本关于OCV的Oreilly书.

希望这会有所帮助,Nand