如何使用闭路电视摄像机源计算房间内的人数?

信息处理 计算机视觉 视频处理 检测 视觉跟踪
2022-02-13 07:17:28

我试图找出如何使用固定在房间顶角之一的闭路电视摄像机输入的信息来计算房间内的人数。摄像机的数量最多可以为 2,但现在为 1。目标是只能够实时判断房间里有多少人。它的精确度并不太重要,例如系统可能会建议一个范围,例如“现在有超过 5 个人”。

在浏览和研究中,我遇到了很多与计算机视觉和图像处理相关的非常复杂的算法和术语,我根本不了解,例如 OpenCV、HOG、Blob 检测/跟踪、前景/背景减法等。

我是一名设计专业的学生。我没有编程背景。但是,大约一周前,我被介绍给了 Processing。因此,如果有人可以在这里提供一些教程/参考/代码来帮助我,让它在像 Processing 这样的语言中工作,以进行原型设计。

提前致谢。

2个回答

这显然不是一件容易的事。

问题是,如果您想要或多或少准确的计数,那么您需要求助于高级算法(可能使用 2 个摄像头或 kinect)。

如果你负担不起走这条路,那么你需要尝试更简单的选择。就个人而言,我会尝试以下方法:

  • 检测皮肤像素,据此分割图像,然后计算斑点(复杂度中等);
  • 检测人脸,然后计数。显然,人必须面对摄像头,但你可以找到任何使用不同库的人脸检测实现(复杂度低);
  • 使用背景减法(经过仔细调整以考虑自然光照变化)并根据属于前景的像素数猜测计数(复杂度低,但预期结果不佳);
  • 应用一些现有的行人检测算法(复杂度中到高)。

您不必自己实现所有这些。在您的情况下,检查 OpenCV 可以做什么(或者您选择的算法是否在 OpenCV 中实现)似乎是一个不错的选择,因为:

  1. Processing 和 openFrameworks 有 OpenCV 的包装器;
  2. OpenCV 通常具有良好的运行时性能;
  3. 许多您感兴趣的计算机视觉算法都是使用 OpenCV 开发的(人脸检测、背景减法,可能还有行人检测)。

OpenCV 是一个开源的计算机视觉库,它基于并且可以在大多数语言中使用。它提供了一种快速计算计算机视觉的方法。

话虽如此,这个问题非常复杂,如果您没有任何图像处理方面的实际经验,当然还有编程方面的经验!您想确定房间里有多少人,所以是的,前景/背景减法将在这个问题域中派上用场。主要关注点是从房间里的物体中识别出一个人。问问自己:我将/可以如何做到这一点?

如果我是你,我会接受这项工作并将其建立在“静止图像”的基础上,并获得识别房间内人员的知识和经验。远离编程语言(例如 C/C++——暂时!)专注于 Python + OpenCV 之类的东西,或者使用 Matlab。

希望这个对你有帮助。