Senior Computer Vision Engineer (Python/ONNX) - Real-Time Card Game Analysis & Overlay
Budget: €1,500 – €3,000 EUR
Busco un ingeniero experto en Visión Artificial para desarrollar un MVP de asistencia en tiempo real para juegos de cartas de alta velocidad. El sistema debe capturar vídeo de una fuente externa, reconocer el estado del juego (OCR + Detección de Objetos), consultar una tabla de estrategia predefinida y proyectar la decisión óptima en un Overlay transparente con latencia ultra-baja (<100ms).
HARDWARE TARGET (ARQUITECTURA HÍBRIDA):
Fase 1 (Actual - Desarrollo): Mini PC Intel (iGPU Iris Plus). Debe optimizarse usando OpenVINO vía ONNX.
Fase 2 (Futuro - Producción): Workstation con NVIDIA GPU.
(Esto es debido a que en primera instancia el prototipo trabajara en un mini pc con intel sin gpu, y en el futuro se escalara a NVIDIA)
Requisito: El código debe ser modular y agnóstico al hardware.
REQUISITOS TÉCNICOS Y FUNCIONALIDADES
1. MÓDULO DE VISIÓN (INPUT):
Detección de Assets: Identificar "Cartas del Usuario" y "Cartas Mesa" mediante Template Matching robusto o modelos CNN ligeros.
OCR Numérico de Precisión: Leer valores numéricos críticos en pantalla.
Nota: Se requiere estabilización temporal (buffer) para evitar lecturas erróneas por parpadeos o animaciones de la UI del juego.
Detección de Estado: Identificar cuándo es el turno de cada jugador.
2. MÓDULO DE LÓGICA (EL CEREBRO):
El sistema no debe "pensar", solo debe "consultar".
Requisito: Implementar una función de Lookup (Búsqueda) que cruce los datos visuales con un archivo de datos local (JSON).
Flujo de Datos:
Visión detecta: Usuario: [As-Corazones, Rey-Picas].
Sistema consulta strategy.json: Busca esa combinación exacta.
Archivo devuelve: Action_ID: 1 (Color Verde), Value: "High Risk".
Sistema envía al Overlay: Dibujar marco verde.
3. INTERFAZ OVERLAY (OUTPUT):
Ventana transparente (PyQt / PySide), click-through, "Always on Top".
Debe dibujar recuadros de colores o texto corto sobre áreas específicas de la pantalla basándose en la respuesta del Módulo de Lógica.
FUNCIONALIDADES DEL PROTOTIPO (Scope Actual) El sistema debe leer en tiempo real (Output en JSON o Consola):
Hole Cards: Lectura de cartas
OCR Numérico: (Usar modelos ligeros, Tesseract solo si está muy optimizado, preferible modelos CNN de dígitos entrenados).
4. GESTIÓN DE RECURSOS
El código debe separar la Captura de Video (Thread 1) del Procesamiento (Thread 2).
En el prototipo (Intel NUC), optimizar para no saturar la CPU (ej: saltar frames si la imagen es estática).
5. ARQUITECTURA ESCALABLE (ORIENTADA A OBJETOS):
El código debe estar estructurado en Clases (ej: Class GameTable).
Aunque el prototipo funcionará en 1 sola instancia, la arquitectura debe permitir instanciar la clase GameTable múltiples veces en el futuro para procesar varias ventanas simultáneamente mediante Batch Processing sin reescribir el núcleo de visión.
ARQUITECTURA DEL CÓDIGO (La Clave de la Escalabilidad) El software no debe tratar la pantalla como un "todo" indivisible. Debes implementar una clase abstracta Table.
Requisito: El código debe instanciar un objeto Table que acepte como parámetro sus coordenadas de recorte (x, y, w, h).
Lógica: Toda la detección (Cartas, OCR, Botones) debe ocurrir relativa a esa instancia de Table.
Por qué: Ahora pasaré las coordenadas de la pantalla completa (1 mesa). En el futuro, pasaré una lista de 8 coordenadas distintas, y el sistema debe ser capaz de iterar sobre ellas sin reescribir la lógica de detección.
ENTREGABLES DEL PROYECTO:
1. Código Fuente Python: Limpio, modular y tipado.
2. Archivo strategy_sample.json: Un archivo de ejemplo simple que yo pueda editar para definir las reglas (ej: Si Cartas = A, B -> Mostrar Texto "X").
3. Archivo de Configuración: config.yaml para definir las coordenadas de lectura y el modo de hardware (INTEL / NVIDIA).
PERFIL REQUERIDO:
• Experiencia demostrable en OpenCV y ONNX Runtime.
• Capacidad para escribir código eficiente en Python (Multiprocessing).
• Experiencia previa creando Overlays en Windows.
Responder a la oferta con la palabra "VISION" para comprobar que ha leido el proyecto aquí presentado
HARDWARE TARGET (ARQUITECTURA HÍBRIDA):
Fase 1 (Actual - Desarrollo): Mini PC Intel (iGPU Iris Plus). Debe optimizarse usando OpenVINO vía ONNX.
Fase 2 (Futuro - Producción): Workstation con NVIDIA GPU.
(Esto es debido a que en primera instancia el prototipo trabajara en un mini pc con intel sin gpu, y en el futuro se escalara a NVIDIA)
Requisito: El código debe ser modular y agnóstico al hardware.
REQUISITOS TÉCNICOS Y FUNCIONALIDADES
1. MÓDULO DE VISIÓN (INPUT):
Detección de Assets: Identificar "Cartas del Usuario" y "Cartas Mesa" mediante Template Matching robusto o modelos CNN ligeros.
OCR Numérico de Precisión: Leer valores numéricos críticos en pantalla.
Nota: Se requiere estabilización temporal (buffer) para evitar lecturas erróneas por parpadeos o animaciones de la UI del juego.
Detección de Estado: Identificar cuándo es el turno de cada jugador.
2. MÓDULO DE LÓGICA (EL CEREBRO):
El sistema no debe "pensar", solo debe "consultar".
Requisito: Implementar una función de Lookup (Búsqueda) que cruce los datos visuales con un archivo de datos local (JSON).
Flujo de Datos:
Visión detecta: Usuario: [As-Corazones, Rey-Picas].
Sistema consulta strategy.json: Busca esa combinación exacta.
Archivo devuelve: Action_ID: 1 (Color Verde), Value: "High Risk".
Sistema envía al Overlay: Dibujar marco verde.
3. INTERFAZ OVERLAY (OUTPUT):
Ventana transparente (PyQt / PySide), click-through, "Always on Top".
Debe dibujar recuadros de colores o texto corto sobre áreas específicas de la pantalla basándose en la respuesta del Módulo de Lógica.
FUNCIONALIDADES DEL PROTOTIPO (Scope Actual) El sistema debe leer en tiempo real (Output en JSON o Consola):
Hole Cards: Lectura de cartas
OCR Numérico: (Usar modelos ligeros, Tesseract solo si está muy optimizado, preferible modelos CNN de dígitos entrenados).
4. GESTIÓN DE RECURSOS
El código debe separar la Captura de Video (Thread 1) del Procesamiento (Thread 2).
En el prototipo (Intel NUC), optimizar para no saturar la CPU (ej: saltar frames si la imagen es estática).
5. ARQUITECTURA ESCALABLE (ORIENTADA A OBJETOS):
El código debe estar estructurado en Clases (ej: Class GameTable).
Aunque el prototipo funcionará en 1 sola instancia, la arquitectura debe permitir instanciar la clase GameTable múltiples veces en el futuro para procesar varias ventanas simultáneamente mediante Batch Processing sin reescribir el núcleo de visión.
ARQUITECTURA DEL CÓDIGO (La Clave de la Escalabilidad) El software no debe tratar la pantalla como un "todo" indivisible. Debes implementar una clase abstracta Table.
Requisito: El código debe instanciar un objeto Table que acepte como parámetro sus coordenadas de recorte (x, y, w, h).
Lógica: Toda la detección (Cartas, OCR, Botones) debe ocurrir relativa a esa instancia de Table.
Por qué: Ahora pasaré las coordenadas de la pantalla completa (1 mesa). En el futuro, pasaré una lista de 8 coordenadas distintas, y el sistema debe ser capaz de iterar sobre ellas sin reescribir la lógica de detección.
ENTREGABLES DEL PROYECTO:
1. Código Fuente Python: Limpio, modular y tipado.
2. Archivo strategy_sample.json: Un archivo de ejemplo simple que yo pueda editar para definir las reglas (ej: Si Cartas = A, B -> Mostrar Texto "X").
3. Archivo de Configuración: config.yaml para definir las coordenadas de lectura y el modo de hardware (INTEL / NVIDIA).
PERFIL REQUERIDO:
• Experiencia demostrable en OpenCV y ONNX Runtime.
• Capacidad para escribir código eficiente en Python (Multiprocessing).
• Experiencia previa creando Overlays en Windows.
Responder a la oferta con la palabra "VISION" para comprobar que ha leido el proyecto aquí presentado