Saltar a contenido

Documentación: Nodo Secuencia de Imágenes (Image Sequence)

Descripción General

El Nodo Secuencia de Imágenes (Image Sequence) es un nodo de acción que captura varias imágenes (snapshots) consecutivas de uno o más canales de video durante un período de tiempo definido, y las compone en una cuadrícula (grid) tipo collage en una sola imagen de salida.

A diferencia del nodo Obtener captura, que toma una sola foto, este nodo permite reconstruir la secuencia temporal de lo que ocurrió frente a la cámara (por ejemplo, los segundos previos y posteriores a una alarma), entregando una vista resumida en mosaico muy útil como evidencia o para análisis con IA.


¿Cuándo usar este nodo?

Utiliza este nodo cuando necesites:

  • Capturar la evolución temporal de un evento, no solo un instante (por ejemplo, ver la secuencia de cómo una persona se acerca a una zona restringida).
  • Generar una imagen tipo collage que muestre múltiples fotogramas en una sola imagen, fácil de adjuntar a una notificación o reporte.
  • Producir un conjunto visual de fotogramas para enviarlo a un modelo de IA que analice movimiento o cambios entre cuadros.
  • Documentar como evidencia la secuencia de un incidente industrial (por ejemplo, los segundos alrededor de una parada de emergencia en una línea de producción).

Configuración del Nodo

El nodo cuenta con dos pestañas de configuración en la parte superior: Formulario (Form) y Editor de JSON (JSON Editor).

Configuración vacía del nodo Secuencia de imágenes

Vista Formulario

1. Objetos (Objects) *Requerido

Permite seleccionar uno o más canales de video de los que se tomarán las capturas. - Haz clic en el botón Select objects para abrir el modal del selector. - Navega por la pestaña Devices (Dispositivos), expande la cámara o NVR y marca el/los canal(es) de video deseado(s). - Confirma con Done. Los objetos seleccionados se muestran como etiquetas (tags) que puedes quitar individualmente.

Modal de selección de objetos

2. Intervalo de captura de snapshots (Snapshot capture interval) *milisegundos

Define el tiempo en milisegundos entre cada captura individual. Un valor menor genera más fotogramas (secuencia más fluida); uno mayor genera menos fotogramas más espaciados. Valor mínimo: 100.

3. Tiempo de la secuencia (Sequence time) *segundos

Define la duración total en segundos durante la cual se capturarán imágenes. Por ejemplo, con un intervalo de 100 ms y un tiempo de secuencia de 5 segundos, el nodo tomará capturas durante 5 segundos.

4. Tamaño de la cuadrícula (Grid size)

Define las dimensiones del mosaico de salida, de forma cuadrada. El valor es el lado de la cuadrícula: - 2 = cuadrícula de 2x2 (4 celdas) - 3 = cuadrícula de 3x3 (9 celdas) - 4 = cuadrícula de 4x4 (16 celdas)

5. Resolución de la cuadrícula (Grid resolution width / height) *píxeles

Define el ancho y alto en píxeles de la imagen final compuesta (por ejemplo, 1920 x 1080).

Formulario configurado del nodo Secuencia de imágenes


Vista Editor de JSON

En la pestaña Editor de JSON (JSON Editor) puedes visualizar y editar directamente todos los parámetros del nodo:

Vista JSON Editor del nodo Secuencia de imágenes


Estructura JSON (Parámetros de entrada)

A continuación se muestra la estructura del JSON que se genera al configurar el nodo:

{
  "objects_ids": [
    "onvif_standard.video_channel.28.VideoSourceToken-0"
  ],
  "snapshopt_capture_interval_in_milliseconds": 100,
  "sequence_time_in_seconds": 5,
  "grid_size": 2,
  "grid_resolution_width": 1920,
  "grid_resolution_height": 1080
}

Campos del JSON

Campo Tipo Descripción
objects_ids array (string) Lista de ID de canales de video (video_channel) de los que se tomarán las capturas.
snapshopt_capture_interval_in_milliseconds number Intervalo en milisegundos entre cada captura. Mínimo 100.
sequence_time_in_seconds number Duración total en segundos de la captura de la secuencia.
grid_size number Lado de la cuadrícula de salida (ej. 2 = 2x2, 3 = 3x3).
grid_resolution_width number Ancho en píxeles de la imagen compuesta final.
grid_resolution_height number Alto en píxeles de la imagen compuesta final.

NOTA: El nombre del campo snapshopt_capture_interval_in_milliseconds contiene una errata heredada del sistema (snapshopt en lugar de snapshot). Si editas el nodo desde la pestaña JSON Editor, debes escribirlo exactamente así para que el nodo lo reconozca.


Output: Dónde viene la data del nodo

Cuando la acción se ejecuta correctamente, el nodo genera la imagen compuesta (mosaico) con la secuencia de capturas y devuelve en su Output (Salida) la URL del archivo de imagen resultante:

{
  "url": "http://netsocs-driverhub-service:3196/public/seq-45cb1228-2e71-4b04-815d-36092f930d6e.jpg"
}

Usar la salida en nodos posteriores

Para referenciar la URL de la imagen compuesta en nodos posteriores (por ejemplo, para adjuntarla a una notificación o enviarla a un nodo de IA), utiliza la clave del nodo (node_key):

{{node_key.url}}

(Recuerda sustituir node_key por la clave asignada automáticamente al nodo en el lienzo).

Caso Especial: Acceso a la URL (Enrutamiento Interno vs. Público)

Al igual que con el nodo Obtener captura, la URL devuelta utiliza el direccionamiento interno de la red de Docker (http://netsocs-driverhub-service:3196/public/), que solo es accesible dentro de la red privada de contenedores.

Para visualizar la imagen públicamente, sustituye la ruta interna por la ruta pública del dominio de tu instancia:

  • Ruta interna (dentro de Docker): http://netsocs-driverhub-service:3196/public/
  • Ruta pública (acceso de usuario): https://<dominio-instancia>/api/netsocs/dh/public/

Ejemplos de uso

Ejemplo 1: Evidencia en secuencia ante parada de emergencia

Caso de uso: Al accionarse un paro de emergencia en una línea de producción, se captura una secuencia de 5 segundos de la cámara de la zona de máquinas y se genera un mosaico 2x2 que se adjunta a la notificación enviada al supervisor.

  • Disparador (Trigger): Evento de parada de emergencia.
  • Objects: Canal de video de la cámara de la zona de máquinas.
  • Sequence time: 5 segundos | Interval: 100 ms | Grid size: 2.
  • Uso posterior: {{image_sequence_node.url}} en un nodo de notificación.

JSON de configuración:

{
  "objects_ids": [
    "onvif_standard.video_channel.28.VideoSourceToken-0"
  ],
  "snapshopt_capture_interval_in_milliseconds": 100,
  "sequence_time_in_seconds": 5,
  "grid_size": 2,
  "grid_resolution_width": 1920,
  "grid_resolution_height": 1080
}


Ejemplo 2: Mosaico de mayor detalle para análisis con IA

Caso de uso: Ante una detección de movimiento en una bodega, se captura una secuencia más larga y con más fotogramas (cuadrícula 3x3) para enviarla a un nodo de análisis con IA que determine si hay actividad humana.

  • Objects: Canal de video de la cámara de la bodega.
  • Sequence time: 9 segundos | Interval: 500 ms | Grid size: 3.

JSON de configuración:

{
  "objects_ids": [
    "onvif_standard.video_channel.28.VideoSourceToken-0"
  ],
  "snapshopt_capture_interval_in_milliseconds": 500,
  "sequence_time_in_seconds": 9,
  "grid_size": 3,
  "grid_resolution_width": 1920,
  "grid_resolution_height": 1080
}


Validación y errores

Condición Causa / Solución habitual
Ningún objeto seleccionado Abre el selector con Select objects y marca al menos un canal de video.
No se genera la imagen Verifica que el driver/motor de video de la(s) cámara(s) esté conectado y transmitiendo.
Pocos o demasiados fotogramas Ajusta la relación entre el intervalo (ms) y el tiempo de secuencia (s) según la cantidad de cuadros deseada.
La imagen no se visualiza desde internet Recuerda convertir la URL interna de Docker a su ruta pública (ver el aviso anterior).

Buenas prácticas

  • Equilibrar intervalo y duración: Calcula cuántos fotogramas necesitas (tiempo_total / intervalo) y ajusta el grid_size para que la cuadrícula los acomode adecuadamente.
  • Nombrar el nodo descriptivamente: Cambia el nombre del nodo en el lienzo (ej. "Secuencia zona máquinas") para usar su variable url con facilidad.
  • Combinar con IA o notificaciones: Aprovecha el mosaico para adjuntarlo a alertas o enviarlo a nodos de análisis de imagen con IA.
  • Cuidar la resolución: Resoluciones muy altas generan imágenes más pesadas. Ajusta grid_resolution_width/height según el uso (evidencia, mensajería, análisis).