# Camera USB External

This function block connects to an external USB camera by device index and provides flexible controls for resolution, exposure and live frame streaming. It is suitable for automation and production setups where camera index, resolution and exposure are driven by other blocks or external signals.

## 📥 Entradas

`Activate Signal`\
Usa este booleano para comenzar a recuperar frames de la cámara seleccionada.

`Release Signal`\
Usa este booleano para detener la cámara y liberar sus recursos.

`Camera Index`\
Proporciona un entero para seleccionar el dispositivo de cámara (índice de dispositivo o mapeo de índices escaneados).

`Resolution Width`\
Proporciona un entero para el ancho deseado de captura.

`Resolution Height`\
Proporciona un entero para la altura deseada de captura.

`Scan Cameras`\
Ajústalo a `true` para volver a escanear las cámaras USB conectadas y actualizar la lista de dispositivos disponibles.

`Set Exposure`\
Valor numérico opcional para establecer la exposición manual en la cámara cuando esta lo soporte.

`Set Auto Exposure`\
Valor numérico opcional para establecer el modo de autoexposición de la cámara cuando sea compatible.

## 📤 Salidas

`Camera Frame`\
El último frame de imagen capturado desde la cámara USB seleccionada.

## 🕹️ Controles

`Source / Resolution Info`\
Una etiqueta de estado que muestra la fuente de cámara actual y la resolución activa.

Nota: Muchos controles se exponen como entradas para que el bloque pueda ser controlado por otros bloques o controles de la UI.

## 🎯 Características

* Selección de cámara por índice de dispositivo o mediante la lista escaneada, útil para sistemas con múltiples cámaras.
* Cambio de resolución en tiempo de ejecución usando entradas separadas de ancho y altura.
* Control de exposición manual y autoexposición cuando la cámara y la plataforma lo soportan.
* Comportamiento de reinicio suave: el bloque intenta recuperarse de frames en blanco o fallidos reiniciando automáticamente la cámara.
* Cargador de frames en segundo plano opcional (si está configurado en el sistema) para transmitir frames para logging remoto o análisis.
* Diseñado para flujos de trabajo headless o automatizados porque la mayoría de ajustes están disponibles vía entradas.

## ⚙️ Mecanismo de ejecución

* Cuando `Activate Signal` es `true`, el bloque intenta entregar frames a través de `Camera Frame`.
* Cuando `Release Signal` es `true`, el bloque detiene la captura y libera los recursos de la cámara.
* Cambiar `Camera Index` provoca que el bloque abra el dispositivo elegido.
* Proporcionar `Resolution Width` y `Resolution Height` mientras está activo intentará cambiar la resolución de captura.
* Proporcionar `Set Exposure` o `Set Auto Exposure` intentará ajustar las configuraciones de exposición si el dispositivo lo soporta.
* Si el bloque encuentra frames en blanco o fallidos de forma repetida, realizará un ciclo de reinicio para recuperar la cámara automáticamente.
* Si se activa `Scan Cameras`, el bloque refresca la lista de cámaras disponibles (útil al conectar nuevos dispositivos).

## 📝 Instrucciones de uso

1. Usa `Scan Cameras` o el descubrimiento de cámaras del sistema para listar los dispositivos disponibles.
2. Proporciona el índice de dispositivo deseado en `Camera Index` para elegir una cámara.
3. Opcionalmente fija `Resolution Width` y `Resolution Height` para el tamaño de captura que desees.
4. Envía `Activate Signal` para comenzar la captura de frames. Monitorea `Source / Resolution Info` para el estado actual.
5. Ajusta `Set Exposure` o `Set Auto Exposure` solo si tu cámara soporta estos controles.
6. Envía `Release Signal` cuando termines para liberar el dispositivo.

## 💡 Tips y trucos

* Para previsualizar frames en vivo, conecta la salida `Camera Frame` de este bloque al bloque `Show Image` para un visor interactivo.
* Para guardar frames o crear un dataset, conecta `Camera Frame` a `Image Logger` o `Record Video`.
* Si la cámara produce frames con ruido, prueba enviar los frames por `Blur` o `Denoising` antes de pasarlos a los detectores.
* Redimensiona capturas de alta resolución antes de procesamiento intensivo para mejorar la velocidad: conecta `Camera Frame` a `Image Resize` y luego a los bloques de análisis.
* Para análisis basado en regiones, recorta el frame usando `Image ROI Select` antes de ejecutar detectores como `Find Object` u `Object Detection`.
* Combínalo con bloques de IA como `Object Detection - Custom` o `Skeleton Estimation` para pipelines de inferencia en vivo.
* Usa `Scan Cameras` al conectar cámaras en caliente para que el bloque descubra nuevos dispositivos sin reiniciar todo el sistema.

## 🛠️ Solución de problemas

* No hay frames o frames negros/en blanco:
  * Verifica que el entero proporcionado a `Camera Index` sea el correcto. Si no estás seguro, ejecuta un escaneo con `Scan Cameras`.
  * Asegúrate de que ninguna otra aplicación esté usando la cámara. Libera o cierra otras apps y vuelve a intentarlo.
  * Prueba con valores de resolución más bajos mediante `Resolution Width` y `Resolution Height` — algunas cámaras no pueden transmitir resoluciones altas de forma fiable.
* Los controles de exposición no tienen efecto:
  * No todas las cámaras o plataformas soportan control de exposición programático. Si los ajustes no se aplican, prueba la utilidad del proveedor de la cámara o usa la etiqueta de Info del bloque para confirmar los valores actuales.
* Pérdidas de frames intermitentes o fallos:
  * Prueba usar un puerto USB diferente o un hub USB con alimentación. Usa una resolución más baja para reducir el ancho de banda.
  * Si la recuperación automática no ayuda, alterna `Release Signal` y luego `Activate Signal` para forzar un reinicio completo.
* Cámara no detectada en el escaneo:
  * Asegúrate de que el dispositivo esté alimentado y conectado. Vuelve a enchufar la cámara y habilita `Scan Cameras` de nuevo.
  * En algunos sistemas los índices de dispositivo pueden cambiar tras reiniciar o volver a conectar — utiliza el mapeo de la lista escaneada para seleccionar de forma fiable.

Si los problemas persisten, previsualiza frames con `Show Image` y captura una grabación corta con `Record Video` para inspeccionar el comportamiento y compartirla con el soporte.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.augelab.com/spanish/bloques-de-funcion/input-output/image-inputs/camera-usb-external.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
