El Procesamiento Digital de Imágenes (DPI) es un campo de software de rápido crecimiento, impulsado por el aumento de técnicas de aprendizaje automático accesibles a través de la nube. Procesar imágenes en la nube elimina la necesidad de hardware dedicado, convirtiendo al DPI en un método versátil y económico. Una de las aplicaciones más comunes es la detección y conteo de peatones, una métrica fundamental para aeropuertos, estaciones de tren, tiendas minoristas, estadios y museos.

Ventajas del conteo de personas basado en IoT
Los contadores tradicionales suelen ser costosos y están vinculados a sistemas propietarios que limitan la extracción de datos. Por el contrario, un sistema embebido utilizando su propia cámara y computadora de placa única (SBC) permite:
- Ahorro de tiempo y dinero.
- Libertad para adaptar la aplicación a los KPIs más relevantes.
- Integración con fuentes externas como clima, precios o sistemas de gestión empresarial.
Implementación técnica del sistema
Este tutorial utiliza OpenCV y Python para analizar el número de personas en un área determinada, enviando los resultados a la plataforma Ubidots. Este ejemplo funciona en distribuciones basadas en Linux, incluyendo Raspberry Pi y Orange Pi.
Secciones del código
La lógica del detector se divide en ocho secciones clave:
- Configuración e inicialización: Importación de bibliotecas (imutils, cv2, requests, argparse). Se utiliza el descriptor HOG (Histograma de Gradientes Orientados) combinado con una SVM (Máquina de Vectores de Soporte) preentrenada por OpenCV.
- Función detector(): Redimensiona la imagen y utiliza detectMultiScale() para identificar personas. Se emplea la supresión no máxima para eliminar cuadros delimitadores superpuestos y reducir falsos positivos.
- Procesamiento local: Función para leer archivos de imagen locales, detectar personas y mostrar el resultado en una ventana del sistema.
- Procesamiento en tiempo real: Uso de VideoCapture() para obtener imágenes de la cámara web, detectarlas y enviar resultados a Ubidots cada "n" segundos.
- Manejo de argumentos: Gestión de comandos desde la terminal para elegir entre archivo local o cámara.
- Comunicación con la nube: Funciones buildPayload y sendToUbidots para transmitir los datos mediante solicitudes HTTP.
- Análisis de argumentos: El script utiliza argsParser para devolver los parámetros de ejecución como un diccionario.
- Ejecución principal: La función main() lanza la rutina completa definida por el usuario.
CURSO de VISION ARTIFICIAL CLASE 4 | CAPTURA DE VIDEO EN TIEMPO REAL | Python OpenCV
Pruebas y visualización
Una vez configurado el archivo peopleCounter.py con su TOKEN de Ubidots, puede realizar pruebas utilizando conjuntos de datos públicos como el de Caltech o Pexels. Para ejecutar el análisis desde la consola, utilice los comandos definidos en su script para procesar imágenes locales o el flujo de video en vivo.
Panel de control en Ubidots
Para visualizar los resultados, se recomienda configurar un HTML Canvas en Ubidots. Esto permite observar en tiempo real el tráfico de personas detectado, integrando gráficos e imágenes procesadas mediante código JavaScript dentro del widget.
