# Barcode Reader

Este bloque de función lee códigos de barras y códigos QR a partir de una imagen de entrada y devuelve una imagen anotada junto con la información decodificada. Funciona con los tipos de código más comunes y está diseñado para integrarse rápidamente en flujos de inspección o registro.

## 📥 Entradas <a href="#inputs" id="inputs"></a>

`Barcode Image`\
Imagen que contiene un código de barras o QR a decodificar. Puede ser en color o en escala de grises.

## 📤 Salidas <a href="#outputs" id="outputs"></a>

`Barcode Image`\
Imagen anotada. Cuando se detecta un código, la salida muestra marcadores visuales (cajas/etiquetas) sobre la imagen.

`Barcode Type`\
Tipo de código detectado (por ejemplo QR, CODE128, etc.).

`Barcode Data`\
Carga decodificada contenida en el código de barras o QR (texto o contenido numérico).

## 🕹️ Controles <a href="#controls" id="controls"></a>

Este bloque de función no tiene controles interactivos. Se ejecuta automáticamente cuando se le proporciona una imagen.

## 🎨 Características <a href="#features" id="features"></a>

* Decodificación rápida de códigos de barras y QR en una sola entrada de imagen.
* Retroalimentación visual mediante imagen anotada para confirmar la ubicación de la detección.
* Devuelve tanto los datos decodificados como el tipo de código detectado para su procesamiento posterior.

## 📝 Instrucciones de uso <a href="#usage" id="usage"></a>

1. Proporcione una imagen a la entrada `Barcode Image` desde cualquier bloque que genere imágenes (por ejemplo una cámara o `Load Image From Path`).
2. Inspeccione la salida `Barcode Image` para verificar visualmente la detección.
3. Utilice las salidas `Barcode Type` y `Barcode Data` para activar lógica, registros o almacenamiento.

## 📊 Evaluación <a href="#evaluation" id="evaluation"></a>

Cuando el bloque recibe una imagen, analiza el frame en busca de patrones de código de barras. Si se encuentra un código, el bloque produce una imagen anotada, el tipo de código detectado y los datos decodificados. Si no se encuentra nada, la imagen anotada se devuelve sin cambios y las salidas de datos indicarán que no hubo detección.

## 💡 Consejos y trucos <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Combine con `Image ROI Select` para recortar la región alrededor de una etiqueta o paquete antes de alimentarla a este bloque. Recortar reduce detecciones falsas y acelera el procesamiento.
* Si el código es pequeño o de bajo contraste, pruebe con `Image Resize` para ampliar el área de interés antes de decodificar.
* Use `Blur` con moderación para reducir ruido cuando las imágenes sean granuladas; en algunos casos un desenfoque ligero mejora la detección.
* Cuando los códigos estén impresos sobre fondos complejos, aplique `Image Threshold` para aumentar el contraste entre el código y el fondo.
* Previsualice resultados con `Show Image` para confirmar la detección y las marcas en la interfaz.
* Para registro automatizado de valores decodificados, envíe `Barcode Data` a `CSV Export` o guarde frames con `Image Logger` para auditorías.
* Para flujos por lotes o basados en archivos, cargue imágenes con `Load Image From Path` y procese a través de este bloque.

## 🛠️ Solución de problemas <a href="#troubleshooting" id="troubleshooting"></a>

* No se detecta ningún código
  * Asegúrese de que la región del código sea claramente visible y no esté muy borrosa, oculta o demasiado pequeña.
  * Intente recortar el área con `Image ROI Select` y aumentar el tamaño con `Image Resize`.
  * Mejore el contraste con `Image Threshold` o ajuste la iluminación en la captura.
* Datos incorrectos o corruptos
  * Revise la calidad de la imagen y la alineación del código. La rotación o distorsión de perspectiva puede afectar la decodificación — recorte y alinee la región primero.
  * Si se solapan varios códigos, aíselos usando `Image ROI Select` o filtros de preprocesado.
* Demasiadas falsos positivos
  * Restringa el área de entrada mediante `Image ROI Select` o aplique filtrado simple (umbralización, filtros de color) antes de decodificar.

Si necesita inspeccionar visualmente los frames durante la configuración, conecte la salida a `Show Image` para confirmar cómo el bloque anota los códigos detectados.
