Raspberry Pi 万圣节要糖计数器,使用 OpenCV

Avatar
Lisa Ernst · 25.10.2025 · 技术 · 4 min

万圣节要糖计数器在门前记录来访者,并将每次“进入”作为带时间戳的事件存储。使用 Raspberry Pi 可以干净地实现这一点,可以通过摄像头(OpenCV/YOLO,越过一条线)或简单地通过门传感器和时间序列在仪表板中显示。本教程将逐步展示哪种变体何时合适、工作原理以及在哪里可以找到可靠的教程。

简介与概览

对于一个万圣节要糖计数器,有两种主要方法:基于摄像头的计数和基于传感器的计数。两者都使用 Raspberry Pi 作为中央控制单元。摄像头方案在视频图像中识别人物,跟踪他们跨越虚拟线条,将其注册为计数事件。这被称为线/区域计数。传感器方案使用门传感器,记录每一次开启和关闭的过程。所收集的数据可以在仪表板中可视化,例如使用 Grafana。

基于摄像头的计数

基于摄像头的计数使用计算机视觉来识别并计数人员。 OpenCV 是一种用于图像处理和跟踪的库。 YOLO (You Only Look Once) 是一种能够实时识别对象的深度学习检测器。Ultralytics 直接记录用于 YOLO 的线/区域计数。它在视频图像中识别人,并在跨越虚拟线时将“+1”记入,避免跟踪后端造成的重复计数。早在 2018 年就展示了 PyImageSearch 一个可用于实战的人员计数器,使用 OpenCV, 通过一条线进行跟踪和“进/出”逻辑。自 2024/2025 年起,就有关于线条/区域的完善指南。 YOLO-Counting (线条/区域) 以及跟踪后端。对于硬件,存在一个 offizieller Quick-Start von Ultralytics für den Raspberry Pi (包含 Pi 5、Bookworm、摄像头设置以及用于更高性能的 NCNN 导出). OpenCV 可以通过软件包源或构建脚本在树莓派上安装; Q-engineering pflegt aktuelle, Pi-5-taugliche Anleitungen. 基于摄像头的计数提供上下文,但需要光照和计算能力。YOLO 对变化背景具有鲁棒性,OpenCV 专注版本更轻,适用于移动较少的场景。对于 Pi 5,Ultralytics 建议使用 NCNN 模型,因为它们在 ARM 上的运行效率高于纯 PyTorch 推理,从而降低延迟和功耗。

OpenCV 可实现对人员的实时精确识别与计数。

Quelle: youtube.com

OpenCV 能在实时中实现对人员的精确识别与计数。

Quelle: YouTube

基于传感器的计数

除了基于摄像头的计数外,可以使用门传感器,如磁簧开关,记录门的每一次开启和关闭。这种方法稳健且通常足够。 Adafruit bietet Anleitungen zur Bewegungserfassung mit dem Raspberry Pi. 也可以在 Raspberry Pi Stack Exchange finden sich Informationen zur Anbindung von 2-Draht-Türsensoren. 门传感器极为简单,但只统计“门事件”。在万圣节的聚集人群中,可能低估或高估实际人数。但它们数据占用少,所需计算能力也低于摄像系统。

红外传感器提供一种简单而有效的访客计数方法。

Quelle: donskytech.com

红外传感器提供一种简单而有效的访客计数方法。

数据可视化与存储

用于可视化计数数据的场景包括 InfluxDB (Zeitreihen-Datenbank)Grafana. 如果没有专用数据库,可以 Grafana Live/MQTT 用于。这个 Grafana MQTT-Datasource-Plugin 优先考虑实时数据。对于仪表板,InfluxDB 2 与 Grafana 已在树莓派上建立起官方设置指南。若希望无数据库启动,可以通过 Grafana Live 和 MQTT 插件进行流式传输,该插件优先实时数据而非历史数据。Grafana-MQTT 流式传输可用,但面向实时。历史数据需要数据库。社区意见在 MQTT 插件中有时报告不稳定行为或限制,这在生产环境中使得 DB 管线成为合理的选择。

实际实现与技巧

为了快速得到结果,选择在你们的环境中成功率最高的方法。对于带 YOLO 的摄像头变体:安装 Ultralytics,选择轻量模型(如“n”),在门槛处定义一条线,通过 MQTT 发布计数回调。这个 offizielle Raspberry-Pi-How-to deckt Setup und Beschleunigung per NCNN ab. 仅 OpenCV:背景减法/跟踪、虚拟线、离线计数——在稳定背景下特别合适。门传感器路径:将簧磁开关接到 GPIO,使用 Python 脚本实现开启/关闭并 MQTT 发布。 Verkabelung und Pull-ups sind dokumentiert. 对于仪表板:要么 InfluxDB 2 + Grafana nach Anleitung installieren 或者 Live/MQTT testen, wenn Historie unwichtig ist. Maker 社区的 Trick-or-Treat 示例展示了运动触发、计数器和显示如何协同工作,例如, „Pumpkin Pi Trick-or-Treat Tracker“. 该视频 zeigt Counting mit YOLOv8, ByteTrack und Supervision; 有助于看到识别、跟踪和线事件之间的协同。先从小处开始,在实际门上进行测试,只扩展日常需要的部分——这样你的计数器就会准确地统计真正重要的数量。

使用 Raspberry Pi 可以实现面向万圣节访客的创意计数系统。

Quelle: support.initialstate.com

使用 Raspberry Pi 可以实现面向万圣节访客的创意计数系统。

Quelle: YouTube

Teilen Sie doch unseren Beitrag!