Sistema de control de mouse utilizando visión artificial y seguimiento ocular. Permite mover el cursor con los movimientos de la cabeza y realizar clicks mediante gestos de parpadeo.
| Gesto | Acción |
|---|---|
| Mover la cabeza | Mover el cursor del mouse |
| Guiñar ojo izquierdo | Click izquierdo |
| Guiñar ojo derecho | Click derecho |
| Doble parpadeo rápido | Doble click |
| Cerrar ambos ojos por 1 segundo | Captura de pantalla (Screenshot) |
- Python 3.8 o superior
- Webcam funcional
- Windows 10/11
# Crear entorno virtual
python -m venv venv
# Activar entorno virtual (Windows PowerShell)
.\venv\Scripts\activate
# Activar entorno virtual (Windows CMD)
venv\Scripts\activate.bat
# Activar entorno virtual (Linux/Mac)
source venv/bin/activatepip install -r requirements.txt# Asegúrate de tener el entorno virtual activado
.\venv\Scripts\activate
# Ejecutar
python mouse_ocular.py| Tecla | Función |
|---|---|
C |
Recalibrar posición (mira al centro de la pantalla) |
Q |
Salir del programa |
Puedes ajustar los siguientes parámetros en el archivo mouse_ocular.py:
# Sensibilidad del movimiento (mayor = más rápido)
self.sensitivity_x = 4.0
self.sensitivity_y = 3.5
# Suavizado del movimiento (menor = más suave pero más lento)
self.SMOOTHING_FACTOR = 0.08
# Frames necesarios para confirmar cierre de ojo (más = menos falsos positivos)
self.BLINK_THRESHOLD = 4
# Tiempo para screenshot con ambos ojos cerrados
self.SCREENSHOT_HOLD_TIME = 1.2 # segundos
# Tiempo máximo entre parpadeos para considerar doble click
self.DOUBLE_BLINK_THRESHOLD = 0.7 # segundos
# Cooldown entre clicks para evitar repeticiones
self.CLICK_COOLDOWN = 0.5 # segundos- Recalibra presionando
Cmientras miras al centro de la pantalla - Aumenta el
SMOOTHING_FACTORpara movimientos más suaves (ej: 0.05) - Asegúrate de tener buena iluminación frontal
- Reduce el valor de
BLINK_THRESHOLD(ej: 3) - Verifica que la cámara esté a la altura de los ojos
- Asegúrate de que hay buena iluminación
- Aumenta el valor de
BLINK_THRESHOLD(ej: 5 o 6) - Aumenta
CLICK_COOLDOWNpara mayor espacio entre clicks (ej: 0.7)
- Acércate más a la cámara (distancia recomendada: 50-80cm)
- Mejora la iluminación del ambiente
- Evita contraluz (luz detrás de ti)
- Verifica que tienes permisos de escritura en la carpeta del proyecto
- Los screenshots se guardan en el mismo directorio que
mouse_ocular.py
Proyecto Mouse Ocular/
├── assets/ # Imágenes y recursos del proyecto
├── venv/ # Entorno virtual de Python
├── mouse_ocular.py # Programa principal
├── requirements.txt # Dependencias
├── README.md # Este archivo
└── screenshot_*.png # Screenshots capturados (se generan al usar la función)
- OpenCV: Captura de video y detección de rostro/ojos con Haar Cascades
- PyAutoGUI: Control del mouse y capturas de pantalla
- NumPy: Cálculos numéricos para suavizado
- Screeninfo: Obtención de dimensiones de la pantalla
- Detección de rostro: Se usa un clasificador Haar Cascade para detectar el rostro en cada frame.
- Detección de ojos: Se divide la región del rostro y se buscan los ojos usando clasificadores especializados.
- Seguimiento: El centro del rostro se mapea a coordenadas de pantalla con suavizado.
- Gestos: Se detectan transiciones en el estado de los ojos (abierto→cerrado) para generar acciones.
- Iluminación: Asegúrate de tener luz frontal, evita contraluz
- Posición: Siéntate frente a la cámara con la cara bien visible
- Calibración: Al iniciar, mira al centro de la pantalla para una mejor calibración
- Recalibrar: Si el cursor no sigue bien, presiona
Cpara recalibrar
¡Las contribuciones son bienvenidas! Siéntete libre de abrir issues o pull requests.
Este proyecto está bajo la Licencia MIT.