Skip to content

MediaLabUniovi/HIRED25

Repository files navigation

🧠 Detección y Conteo de Personas con YOLOv8 + Node-RED

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.


🚀 Características principales

  • 🔍 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...)

🧹 Estructura del proyecto

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

🧮 Instalación del entorno

1️⃣ Instalar Python

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 --version

2️⃣ Instalar VS Code

Descarga Visual Studio Code desde: 👉 https://code.visualstudio.com/

Extensiones recomendadas:

  • Python (Microsoft)
  • Code Runner o Jupyter
  • Pylance

3️⃣ Crear entorno virtual (opcional pero recomendado)

python -m venv venv
venv\Scripts\activate      # En Windows
# o en Linux/Mac:
# source venv/bin/activate

4️⃣ Instalar dependencias

Instala los paquetes necesarios desde requirements.txt:

pip install -r requirements.txt

O manualmente:

pip install ultralytics opencv-python requests

5️⃣ Probar detección local

Ejemplo rápido para probar detección de personas en vídeo:

python 01_detect_video.py

O con cámara web:

python 03_count_camera.py

Pulsa Q para salir del vídeo.


O con envio a web

python 06_count_camera_fast_async.py

⚙️ Configuración personalizada

En 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"

🧹 Dependencias

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

💡 Consejos de rendimiento

  • Usa yolov8n.pt (nano) o yolov8s.pt (small) para equipos con CPU limitada
  • Reduce CAP_PROP_FRAME_WIDTH y CAP_PROP_FRAME_HEIGHT para 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

🛰️ Créditos

Desarrollado en el marco del proyecto HIRED 2025 y el entorno Medialab IoT, basado en YOLOv8 (Ultralytics) y Node-RED Dashboard.


📜 Licencia

Este proyecto se distribuye bajo licencia MIT. Puedes usar, modificar y distribuir libremente, citando la fuente

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages