Este proyecto utiliza Python, OpenCV y YOLOv8 (Ultralytics) para detectar y contar personas en tiempo real desde cámara o vídeo, y envía los resultados (número de personas y vídeo procesado) a un panel web construido en Node-RED Dashboard.
- 🔍 Detección de personas en vídeo o cámara en tiempo real
- 🔢 Conteo de personas detectadas (enviadas a Node-RED)
- 🌐 Integración con Node-RED Dashboard (video feed + gauge)
- ⚡ Modo optimizado para hardware de bajo rendimiento (Raspberry, Balena, Jetson, etc.)
- 📦 Scripts organizados paso a paso (detección, conteo, envío, optimización...)
people_counter/
├── 01_detect_video.py # Detección básica en vídeo
├── 02_count_video.py # Detección + conteo
├── 03_count_camera.py # Conteo desde cámara
├── 04_count_camera_nodered.py # Conteo + envío de datos a Node-RED
├── 05_count_camera_nodered_video.py # Conteo + envío de imagen y datos
├── 06_count_camera_fast_async.py # Versión optimizada (fluida + asincrónica)
├── requirements.txt # Dependencias Python
└── README.md # Este archivo
Descarga e instala la última versión estable de Python 3.11 o 3.12
⚠️ Durante la instalación, marca la casilla "Add Python to PATH"
Verifica que esté instalado:
python --versionDescarga Visual Studio Code desde: 👉 https://code.visualstudio.com/
Extensiones recomendadas:
- Python (Microsoft)
- Code Runner o Jupyter
- Pylance
python -m venv venv
venv\Scripts\activate # En Windows
# o en Linux/Mac:
# source venv/bin/activateInstala los paquetes necesarios desde requirements.txt:
pip install -r requirements.txtO manualmente:
pip install ultralytics opencv-python requestsEjemplo rápido para probar detección de personas en vídeo:
python 01_detect_video.pyO con cámara web:
python 03_count_camera.pyPulsa Q para salir del vídeo.
O con envio a web
python 06_count_camera_fast_async.pyEn los scripts puedes ajustar:
| Variable | Descripción | Ejemplo |
|---|---|---|
NODE_RED_URL |
URL del endpoint Node-RED | "http://localhost:1880/frame" |
SEND_INTERVAL |
Frecuencia de envío (segundos) | 0.7 |
MODEL_PATH |
Ruta del modelo YOLO | "yolov8n.pt" |
| Librería | Descripción |
|---|---|
| opencv-python | Captura y procesamiento de vídeo |
| ultralytics | Implementación de YOLOv8 |
| requests | Envío de datos HTTP a Node-RED |
| base64 | Codificación de imágenes para el dashboard |
- Usa
yolov8n.pt(nano) oyolov8s.pt(small) para equipos con CPU limitada - Reduce
CAP_PROP_FRAME_WIDTHyCAP_PROP_FRAME_HEIGHTpara mayor velocidad - Envía imágenes cada 0.5–1.0 s, no cada frame
- Si usas Raspberry Pi / Balena, activa
model.fuse()para acelerar inferencia
Desarrollado en el marco del proyecto HIRED 2025 y el entorno Medialab IoT, basado en YOLOv8 (Ultralytics) y Node-RED Dashboard.
Este proyecto se distribuye bajo licencia MIT. Puedes usar, modificar y distribuir libremente, citando la fuente