4.9 KiB
4.9 KiB
Sistema de Imagen de Referencia para Canvas de CtrEditor
Este sistema permite generar y analizar imágenes de fondo de referencia para el canvas de CtrEditor, facilitando la detección de problemas de resolución y posicionamiento en las capturas de pantalla.
📁 Archivos del Sistema
generate_canvas_reference.py
- Generador de imagen de fondo con QR codesanalyze_canvas_screenshot.py
- Analizador de capturas con QR codesrequirements.txt
- Dependencias Python necesariascanvas_reference_background.png
- Imagen generada (3915×2726 px)
🚀 Instalación y Uso
1. Instalar Dependencias
pip install -r requirements.txt
2. Generar Imagen de Referencia
python generate_canvas_reference.py
Esto crea canvas_reference_background.png
con:
- Dimensiones: 3915×2726 píxeles (78.31×54.53 metros)
- Resolución: 50 píxeles por metro
- 8 QR codes en posiciones estratégicas
- Grilla de coordenadas cada 1 metro (gruesas cada 5m)
- 4 zonas de color para identificación visual
- Área de objetos marcada en rojo
3. Usar en CtrEditor
- Cargar
canvas_reference_background.png
como imagen de fondo del canvas - Tomar capturas de pantalla (completas o parciales)
- Analizar las capturas con el script analizador
4. Analizar Capturas
python analyze_canvas_screenshot.py screenshot.png
El analizador detecta automáticamente:
- Posición real de QR codes vs posición esperada
- Factor de escala actual vs original
- Distorsiones en resolución horizontal/vertical
- Problemas de posicionamiento en área de objetos
🎯 QR Codes y Sus Posiciones
Etiqueta | Posición (metros) | Propósito |
---|---|---|
TL | (5, 5) | Esquina superior izquierda |
TR | (70, 5) | Esquina superior derecha |
BL | (5, 45) | Esquina inferior izquierda |
BR | (70, 45) | Esquina inferior derecha |
CENTER | (39, 27) | Centro del canvas |
OBJECTS | (42, 20) | Área donde están los objetos |
CAL1 | (20, 15) | Punto de calibración 1 |
CAL2 | (55, 35) | Punto de calibración 2 |
📊 Información en QR Codes
Cada QR contiene datos JSON con:
{
"position": [42, 20],
"label": "OBJECTS",
"canvas_size": [78.31, 54.53],
"image_size": [3915, 2726],
"pixels_per_meter": 50,
"timestamp": "2025-01-09T...",
"type": "CtrEditor_Canvas_Reference"
}
🔍 Ejemplos de Análisis
Captura Normal
$ python analyze_canvas_screenshot.py debug_full_canvas.png
📸 Analizando imagen: debug_full_canvas.png
📐 Tamaño de imagen: 3915 × 2726 píxeles
🔍 QR codes encontrados: 8
🎯 QR #1: TL
📍 Posición esperada: [5, 5] metros
📱 Encontrado en píxeles: (250, 250)
📊 Escala original: 50.0 px/m
📊 Escala actual: 50.0 px/m
📊 Factor de escala: 1.000
Captura con Problemas
🎯 QR #1: OBJECTS
📍 Posición esperada: [42, 20] metros
📱 Encontrado en píxeles: (1890, 850)
📊 Escala original: 50.0 px/m
📊 Escala actual: 25.2 px/m
📊 Factor de escala: 0.504
⚠️ PROBLEMA: Resolución reducida al 50.4%
🛠️ Resolución de Problemas Detectados
Factor de Escala < 1.0
- Causa: Canvas se renderiza a menor resolución
- Solución: Ajustar factor de escala en ScreenshotManager.cs
QR Codes Faltantes
- Causa: Área de captura muy pequeña o desplazada
- Solución: Verificar coordenadas de área de captura
Distorsión Horizontal/Vertical
- Causa: Aspect ratio incorrecto
- Solución: Verificar cálculos de píxeles vs metros
🎨 Características de la Imagen
Zonas de Color
- Zona 1 (Superior izquierda): Rojo muy claro
- Zona 2 (Superior derecha): Verde muy claro
- Zona 3 (Inferior izquierda): Azul muy claro
- Zona 4 (Inferior derecha): Amarillo muy claro
Patrones de Referencia
- Círculos concéntricos en el centro (radios 2, 4, 6, 8, 10m)
- Líneas finas para detectar aliasing
- Grilla precisa con coordenadas etiquetadas
Área de Objetos
Rectángulo rojo que marca la región donde están ubicados los objetos del análisis:
- Coordenadas: 39.92, 19.76 → 44.99, 20.47 metros
- Tamaño: 5.07 × 0.71 metros
📋 Flujo de Trabajo Recomendado
- Generar imagen de referencia
- Cargar como fondo en CtrEditor
- Tomar capturas problemáticas
- Analizar con script automático
- Identificar problemas específicos
- Corregir código ScreenshotManager.cs
- Validar con nuevas capturas
🤖 Integración con LLM
El sistema está diseñado para que los LLMs puedan:
- Leer automáticamente los QR codes de las capturas
- Detectar problemas de escala y posicionamiento
- Generar reportes específicos de cada captura
- Sugerir correcciones basadas en los datos detectados
Este enfoque automatiza completamente la detección de problemas en el sistema de capturas de CtrEditor.