Este proyecto utiliza visión por computadora para monitorear el estado de alerta de una persona mediante la cámara web. Detecta ojos cerrados, bostezos, ceño fruncido y pérdida de rostro, activando alarmas visuales y sonoras cuando se detecta fatiga prolongada.
Ideal para:
- Sistemas de alerta de somnolencia al volante (simulación)
- Monitoreo de atención en entornos educativos o laborales
- Proyectos de arte interactivo o biofeedback
- Detección robusta de ojos mediante Eye Aspect Ratio (EAR)
- Calibración automática del umbral EAR al inicio (se adapta a cada usuario)
- Detección avanzada de fatiga:
- Bostezos (apertura de boca)
- Ceño fruncido (estrés/fatiga)
- Modo "Conducción": desactiva alarmas si el usuario gira la cabeza (mirando a los lados)
- Ajuste por iluminación: sensibilidad adaptativa según brillo ambiental
- Alarma dual: sonora (con
pygame) + visual (parpadeo rojo en pantalla) - Registro automático: guarda eventos en
eye_detection_log.csv - Interfaz intuitiva: contornos de ojos/boca, indicadores de estado y métricas en tiempo real
- Ajuste dinámico del umbral EAR
- En lugar de usar un valor fijo (0.25), calcula el EAR promedio cuando los ojos están abiertos al inicio y ajusta el umbral automáticamente (útil si hay diferencias entre usuarios).
- Visualización mejorada
- Dibuja contornos alrededor de los ojos (no solo puntos).
- Muestra el valor actual de EAR en pantalla.
- Usa colores o iconos intuitivos (🟢/🔴).
- Alarma visual + sonora
- Además del sonido de alarma, parpadea la pantalla o muestra un mensaje grande en rojo.
- Guardar logs o estadísticas
Guarda en un archivo .csv:
- Momentos en que se activó la alarma
- Duración de ojos cerrados
- Tiempo total sin rostro
- Soporte para múltiples personas
- Reemplazo de
dlibpor MediaPipe (más rápido y ligero) - Grabación automática de clips al activar alarma
- Interfaz gráfica (PyQt/Tkinter) con ajustes en tiempo real
- Notificaciones remotas (Telegram, correo, IFTTT)
- Diseño visual inspirado en naturaleza y retro-futurismo
- Sonidos ambientales suaves (opcional)
- Modo "meditación": inversión del propósito (cuenta tiempo con ojos cerrados intencionadamente)
- Python 3.7+
- macOS, Windows o Linux
- Archivos adicionales:
shape_predictor_68_face_landmarks.dat(modelo de dlib)alarm.wav(archivo de sonido personalizable)
opencv-python
dlib
pygame
numpy
scipy# 1. Crear y activar entorno virtual (recomendado)
python3 -m venv eyes-env
source eyes-env/bin/activate # En Windows: eyes-env\Scripts\activate
# 2. Instalar dependencias
pip install opencv-python dlib pygame numpy scipy
# 3. Descargar el modelo de dlib
curl -O http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
bunzip2 shape_predictor_68_face_landmarks.dat.bz2
# 4. Añadir tu archivo de alarma (ej. alarm.wav) en esta carpeta
# 5. Ejecutar (usa la versión más reciente)
python detect-eyes-v3.py💡 Nota: Durante los primeros 3 segundos, mira a la cámara con los ojos abiertos para calibrar el sistema.
q/Q/ESC: salir del programa
.
├── detect-eyes.py # Script en primera version con logica basica
├── detect-eyes-v2.py # Script con mejoras
├── detect-eyes-v3.py # Script principal (versión actual)
├── shape_predictor_68_face_landmarks.dat # Modelo de dlib
├── alarm.wav # Sonido de alarma (personalizable)
└── eye_detection_log.csv # Registro automático de eventos
MIT License — libre para uso personal, educativo o comercial.
Desarrollado con ❤️ por Natxo Varona
Febrero 2026
✨ Consejo: ¡Personaliza
alarm.wavcon tu sonido favorito o un audio relajante para hacer la experiencia más amigable!