A gesture-based screen capture and keyboard shortcut automation system using MediaPipe and FastAPI
Project description
| Branch | Version | Status |
|---|---|---|
master |
0.3.0 |
| Platform | Python | System Dependencies |
|---|---|---|
| Linux (X11/Wayland) | 3.12+ |
libgl1, libglib2.0-0, notify-send, xdotool, ydotool |
| macOS (ARM64) | N/A |
N/A |
| Windows (x86_64) | N/A |
N/A |
- Docs: [Enlace a documentación]
Introducción
Gesture Vision es un sistema de control por gestos, desarrollado en Python para automatizar acciones del escritorio mediante el reconocimiento de gestos en tiempo real.
El sistema funciona mediante un pipeline de visión artificial donde MediaPipe procesa el flujo de la cámara para detectar puntos clave de la mano, coordinado por un backend asíncrono en FastAPI. Esto proporciona un control preciso de eventos con un impacto mínimo en los recursos del sistema.
Arquitectura
Características Principales
- Rastreo de Alta Precisión: Implementación de MediaPipe Hand Landmarker para la detección de puntos clave manuales con baja latencia.
- Control de Disparo Robusto: Sistema de validación basado en tiempo de mantenimiento del gesto y periodos de cooldown para eliminar falsos positivos.
- Gestos de Barrido (Swipe): Cambio de workspace con movimientos horizontales de la mano - izquierda/derecha.
- Captura de Pantalla: Detección del gesto de "paz" (índice y medio levantados) para tomar capturas.
- Modo Invisible (Background): Operación totalmente en segundo plano sin ventanas de previsualización, optimizando el uso de la GPU/CPU.
- Atajos de Teclado: Asocia gestos a atajos del sistema como ctrl+shift+q para ejecutar cualquier acción.
- Soporte X11 y Wayland: Detecta automáticamente si usar xdotool (X11) o ydotool (Wayland).
- Notificaciones Nativas: Integración con el sistema de alertas del escritorio para confirmar acciones instantáneamente.
- Despliegue Nativo: Instalación simplificada vía
pipcon comandos CLI dedicados para la gestión del servicio. - Panel Web: Interfaz gráfica para configurar gestos, atajos y tiempos.
Quick Start
1. Dependencias del Sistema
Instale las librerías necesarias para OpenCV, notificaciones y control de escritorio:
sudo apt-get update && sudo apt-get install -y libgl1 libglib2.0-0 libnotify-bin xdotool ydotool gnome-screenshot scrot
2. Instalación
# Instalar directamente desde PyPI
pip install gesturevision
# O desde el código fuente
git clone https://github.com/yourusername/gesturevision.git
cd gesturevision
pip install -e .
3. Primeira Ejecución
# Instalar dependencias del sistema (opcional)
gesturevision-start --install-deps
# Iniciar el sistema
gesturevision-start
4. Panel de Control
Acceda al panel web: http://localhost:8080
Allí podrá:
- Iniciar/detener el sistema
- Configurar tiempos de gesto y cooldown
- Agregar gestos y asociar atajos de teclado
Tipos de Gestos Disponibles
| Gesto | Descripción |
|---|---|
| ✌️ Paz | Índice y medio arriba |
| ✊ Puño | Mano cerrada |
| ✋ Mano abierta | 5 dedos extendidos |
| 👍 Tres dedos | Índice, medio y anular arriba |
| ☝️ Apuntar | Solo índice arriba |
Atajos de Teclado Soportados
Puede usar cualquiera de los atajos predefinidos o escribir el propio:
- Captura de pantalla:
Print - Cerrar ventana:
alt+F4 - Minimizar todo:
super+d - Bloquear pantalla:
super+l - Cambiar ventana:
alt+Tab - Nueva pestaña:
ctrl+t - Cerrar pestaña:
ctrl+w - Copiar/Pegar:
ctrl+c/ctrl+v - Y muchos más...
Estructura del Proyecto
src/gesturevision/main_vision.py: Motor de detección de gestos y captura.src/gesturevision/api/: Backend FastAPI para control y configuración.src/gesturevision/static/: Interfaz de usuario del panel de control.pyproject.toml: Definición de dependencias y entry points del paquete.gesturevision/assets/hand_landmarker.task: Modelo de IA pre-entrenado.
Configuración
Los ajustes se almacenan en: ~/gesturevision/config.json
Estructura:
{
"gesture_hold_seconds": 1.0,
"cooldown_seconds": 1.5,
"gestures": [
{
"name": "Paz (captura)",
"gesture_type": "peace_sign",
"required_hold_seconds": 1.0,
"enabled": true,
"action": "screenshot",
"shortcut": null
}
]
}
Docker (Opcional)
docker-compose up --build
Acceda al panel en: http://localhost:8080
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gesturevision-0.3.0.tar.gz.
File metadata
- Download URL: gesturevision-0.3.0.tar.gz
- Upload date:
- Size: 5.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d0bb70b28e8cdb481f5aa0b8ea690020427578054a2d48659bc4e341548ffaa
|
|
| MD5 |
a77899869dbabb0e3ed81c7d3df7cad5
|
|
| BLAKE2b-256 |
c1a8d60d4fe563ea31a1f69fc9b1417edbb6dcb1f9db10366dfb4262bf1bbf06
|
File details
Details for the file gesturevision-0.3.0-py3-none-any.whl.
File metadata
- Download URL: gesturevision-0.3.0-py3-none-any.whl
- Upload date:
- Size: 5.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
948bf18a77881b0090ca6a304b56a737e6585f3777e4032ab293aff71fe99849
|
|
| MD5 |
eb491f6b18f0ec0b7466101e3a8b5206
|
|
| BLAKE2b-256 |
80d35b00eaa919e2d07e99ee1bed0740f0f2a29ecfdd2290f1c42ca66aff1c7e
|