> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/spanish/function-blocks/blocks-reference/image-transformations/analysis/image-memory.md).

# Image Memory

This function block keeps an image in memory so you can "freeze" a frame and reuse it until you choose to update it. It is useful when you want to hold a reference image for inspection, logging or downstream processing without continuously relying on a live source.

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

* `Image Any` Conecta la imagen que deseas almacenar o actualizar.
* `Save Image` Cuando es `True`, el bloque conservará (congelará) la imagen actualmente almacenada y no la actualizará desde la entrada.

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

* `Image Any` La imagen que actualmente se mantiene en memoria (ya sea la última imagen almacenada o la entrada en vivo cuando no está congelada).

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

* `Save Image` Usa este control booleano para congelar o descongelar la imagen almacenada.
  * Cuando está en `True`, la imagen almacenada se preserva y el bloque seguirá emitiendo esa imagen incluso si la entrada cambia.
  * Cuando está en `False`, el bloque actualiza su imagen almacenada desde la entrada `Image Any`.

## ⚙️ Mecanismo de ejecución <a href="#running-mechanism" id="running-mechanism"></a>

* Por defecto el bloque emite la imagen más reciente conectada a su entrada `Image Any`.
* Si `Save Image` está en `True`, el bloque mantendrá la imagen actual y continuará emitiendo esa misma imagen hasta que `Save Image` pase a `False`.
* Al guardar y recargar tu proyecto, el bloque puede restaurar la imagen almacenada para que el estado de la memoria persista entre sesiones (si se almacenó una imagen).

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

* Capacidad de congelar un fotograma para un procesamiento descendente consistente.
* Control booleano sencillo para bloquear/desbloquear la imagen almacenada.
* Persistencia al guardar/cargar el proyecto para mantener una imagen de referencia entre sesiones.

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

1. Conecta una fuente de imagen en vivo (cámara, stream, load image, etc.) a la entrada `Image Any`.
2. Para capturar y mantener un fotograma, ajusta `Save Image` a `True`. El bloque seguirá emitiendo ese fotograma.
3. Para reanudar las actualizaciones en vivo, ajusta `Save Image` a `False`. El bloque copiará la entrada más reciente y continuará actualizando su imagen almacenada.

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

* Para previsualizar la imagen almacenada, conecta la salida de este bloque a `Show Image`.
* Usa `Image ROI Select` antes de este bloque para capturar y congelar solo una región de interés en lugar del fotograma completo.
* Si deseas una imagen más pequeña para almacenamiento o procesamiento más rápido, añade `Image Resize` antes del bloque.
* Para referencias más robustas, aplica `Blur` o `Image Threshold` antes de capturar para reducir ruido o binarizar la escena.
* Combínalo con `Image Logger` o `Image Write` para guardar imágenes congeladas en disco cuando se active `Save Image`.
* Usa `Is None` o `Replace None` en etapas posteriores para proteger el flujo de trabajo frente a imágenes ausentes.

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

* Si la salida aparece vacía después de cargar un proyecto, asegúrate de que se haya capturado una imagen previamente con `Save Image` habilitado o proporciona una nueva imagen de entrada y ajusta `Save Image` a `False` para actualizar.
* Si esperas actualizaciones en vivo pero la imagen no cambia, verifica que `Save Image` esté en `False` para permitir que el bloque se refresque desde la entrada.
