人数统计系统

时间:2011-08-10 12:13:14

标签: c# opencv video-processing emgucv

我想使用OpenCV(或Emgu CV)开发一个“人数统计系统”。

请指导我如何实施或引导我参加一些示例或开源项目。

(我做了一些工作:提取差异然后阈值删除背景,使用运动历史等等;仍然没有好结果。)

编辑1:我正在计算一个高人流量(其中十几个可能同时出现)。

编辑2:它必须至少80%准确。人们走过一扇近5米宽的门。问题是我无法控制相机的位置或角度。相机在距离10米处高度2.5米的地方喊叫。

谢谢

6 个答案:

答案 0 :(得分:7)

如果你打电话给人数统计系统一个计算房间内人员的系统,那么我建议你用带有2个激光器(普通激光玩具)和2个光敏电阻的微控制器来实现硬件。对于微控制器,我建议你使用Arduino.And然后创建一个具有Seri​​alPort对象的C#应用​​程序并读取arduino通过USB发送的数据。例如,arduino将为“有人进入房间”发送1,为“有人离开房间”发送0。然后日志记录和统计信息可以在C#中轻松完成。

Arduiono网站:here

Photoresistor只需$ 1:here

与使用质量相当好的相机相比,这种解决方案更便宜,更容易实现。

希望我帮助过你。

答案 1 :(得分:3)

查看最近版本的OpenCV附带的HOG行人检测器(> = 2.2)。

在OpenCV来源中查看modules/objdetect/src/hog.cppsamples/cpp/peopledetect.cpp。不幸的是,目前还没有关于它的官方文档。

答案 2 :(得分:3)

这可以帮助您计算包括人在内的移动物品:Motion Detection project on CodeProject

答案 3 :(得分:2)

人们是场景中唯一的“实体”吗?如果情况并非如此,你是否关心考虑一个人在场景中移动的其他东西?因为如果是这种情况,您可以计算进入或从场景中出来的blob。这可能听起来有点幼稚,但我会采取某种运动图像,按群集中的距离分组运动像素。您的距离度量可以考虑一些限制,例如人们将“经常”站立,因此群集中的像素应该围绕某种回归线(如果摄像机与de floor对齐,则为直线)。没有必要在场景中跟踪它们,只是注意它们何时进入或离开,尽管你会遇到一些问题,例如,人们在场景中自己进入并成对或成组离开。祝你好运:))

答案 4 :(得分:1)

我认为如果你有密集的人群拥有大量的遮挡,你必须使用一些机器学习算法,例如你可以使用隐式形状模型的功能。

答案 5 :(得分:0)

这实际上取决于相机的位置。假设您可以在图像中获得人物的正面轮廓:

这个问题基本上是人脸检测和识别。

有许多方法可以找到面孔,但这是我更熟悉的方法。

对于脸部检测,您需要对肤色进行图像分割。这将提取皮肤区域。 [手臂,胸部(对于那些穿着V形顶部的人),面部,腿部等]然后,您需要将皮肤区域的轮廓与受训练面部的轮廓对齐。

[你需要使用特征脸来创建一个脸部外观的通用轮廓]

如果皮肤区域对齐并且没有偏离轮廓太远,那么它被认为是面部。一旦确认了面部,然后将其添加到特征脸数据存储[用于识别]。要保存处理,如果要查找前一个面,可能需要考虑限制搜索区域。 [给定帧率,上次看到这个人时]

如果您指的是“人群流动”,我认为您只是指人群中的面部密度。

现在您已确认视频中的移动物体是一个人。现在您只需要注意这一点,然后确保您不再将它们视为新人。

这种方法:真的取决于你检测面部区域的能力。如果视频中的人向下看,不适合训练数据的配置文件等,这可能不起作用。如果一个人在视频中戴上太阳镜,也可能会有效。 [可能会被视为“新面孔”]

相关问题