JDSA

Activo · 2025 – presente

VibeWindows

Aplicación WPF (.NET 8) que controla el cursor de Windows con gestos de mano — captura webcam, inferencia ONNX o Python TCP, escritorio virtual multi-monitor e inyección segura desactivada por defecto. MVP núcleo en v0.2.2.

Personal

C#WPF.NETPythonONNXComputer VisionMediaPipe

Resumen ejecutivo

VibeWindows es una aplicación de escritorio WPF (.NET 8) para Windows que permite controlar el PC principalmente con cámara y gestos de mano, sin cerrar la puerta a otras aplicaciones que también necesiten visión (captura única, redistribución interna y, en roadmap, cámara virtual).

El producto captura vídeo de webcam, infiere landmarks de mano (ONNX en proceso o MediaPipe Tasks vía TCP), opcionalmente mueve el cursor del escritorio virtual y ofrece una vista de depuración tipo Kinect (vídeo, overlay, métricas, mapa multi-monitor). Soy autor del diseño y la implementación en los repositorios WUI/, PyHands/ y python/.

Versión actual: 0.2.2Fase A / MVP núcleo (~95 % checklist). Pendiente validación formal M5 (escenarios 1 y 2 monitores).

Contexto y alcance

En alcanceFuera de alcance (por ahora)
Captura webcam + inferencia manosVoz / STT (Fase C)
Control de cursor por gestos (opcional)Lengua de señas (Fase D)
Vista Kinect + mapa de monitoresAgente con contexto de pantalla (Fase E)
Motores Python TCP u ONNX in-processCámara virtual publicada (driver pendiente)
Seguridad de inyección (OFF por defecto)Reserva / automatización de apps de terceros

Arquitectura

Flujo lógico unificado implementado en WUI:

Cámara → CaptureBroker → VisionSession → IVisionEngine → VisionResult ↓ GesturePolicy → PointerDriver ↓ InjectionSafety (OFF por defecto)
Cargando diagrama…

Contexto del sistema

Cargando diagrama…

Selección automática del motor de visión

Cargando diagrama…

Capacidades clave

Interfaz y depuración

IDCapacidadEstado
RF-UI-01Ventana principal con estado del motor y versión
RF-UI-02Indicador claro cuando inyección está desactivada
RF-UI-05Vista Kinect (vídeo, overlay, métricas)
RF-UI-07Mapa de monitores, cursor/mano, recalibrar alcance✅ v0.2.2
RF-UI-08Tema Solarized Light

Visión e inferencia

IDCapacidadEstado
RF-VIS-01Contrato IVisionEngineVisionResult
RF-VIS-04Motor Python por TCP (landmarks + preview JPEG)
RF-VIS-02/03Motores ONNX Zoo y Float (OpenCV / QAIRT)
RF-VIS-07Captura única multiplexada (CaptureBroker)
RF-VIS-08Watchdog reconexión Python (camera_lost)
RF-VIS-09Cámara virtual hacia apps externas

Gestos y puntero

IDCapacidadEstado
RF-GES-01Mover cursor: índice + medio extendidos (ancla anular+meñique)
RF-GES-02Clic izquierdo: pulgar → índice (pinch con histéresis)
RF-GES-03Clic derecho: pulgar → medio
RF-GES-04Solo palma hacia cámara (configurable)
RF-GES-05Mapeo a escritorio virtual multi-monitor✅ v0.2.2
RF-GES-06Calibración de alcance XY y compensación de lejanía✅ v0.2.2
RF-GES-07Suavizado adaptativo del puntero✅ v0.2.2

Seguridad de entrada

IDCapacidadEstado
RF-SEC-01Inyección de ratón OFF al arranque
RF-SEC-02Activación voluntaria en UI
RF-SEC-04Parada de emergencia Ctrl+Shift+E
RF-SEC-05Ratón físico desactiva inyección al moverse

Decisiones de diseño

PrincipioImplementación
Contrato único de salidaVisionResult / HandState — todos los motores convergen aquí
Separación visión / gestoIVisionEngine no conoce el ratón; GesturePolicy no conoce ONNX
Seguridad por defectoInjectionSafety OFF; rescate Ctrl+Shift+E + ratón físico
Latencia controladaColas tamaño 1, DropOldest, stride de inferencia, buffer cámara 1
Degradación eleganteFactory: Python → Float ONNX → Zoo ONNX → StubVisionEngine
Configuración centralizadaVisionConfig y variables VIBE_*

Métricas e impacto

0.2.2

Versión WUI

~95%

Checklist MVP núcleo

2

Motores ONNX + Python TCP

Estado y roadmap

Fases de producto

FaseContenidoEstado
A — MVPCaptura, landmarks, cursor, clic, vista KinectEn curso (~95 %)
B — RobustezCalibración formal M5, perfiles, kill switch refinadoParcial
C — VozDictado / comandosNo iniciado
D — Lengua de señasSecuencias temporalesNo iniciado
E — Agente + pantallaContexto, ActionGateNo iniciado

Pendientes inmediatos

  • Validación M5: comportamiento estable en 1 y 2 monitores
  • Driver VibeVirtualCam (buffer LatestFrameBufferSink listo)
  • Gestos de ventana reservados en GesturePreferences
  • Empaquetado instalable para distribución

Galería

Galería próximamente — capturas y demos en preparación