• Saltar a la navegación principal
  • Saltar al contenido principal

Vicent Sanchis

Accesibilidad, Ciencias de la Visión y Desarrollo WordPress

  • Sobre mí
  • Servicios
  • Blog
  • newsletter
  • Contacto

Crear una animación a partir de un conjunto de imágenes en un directorio con MATLAB

22/03/2020 por Vicent Sanchis Deja un comentario

En este pequeño tutorial veremos como hacer una animación con MATLAB usando como fotogramas imágenes que tenemos en una carpeta.

Lo primero es listar los archivos que tenemos dentro de la carpeta, para ello usamos la función ls:

lista_archivos = ls;

Asumiremos que en esa carpeta únicamente hay imágenes para el video, si hubiese más archivos habría que filtrarlos por nombre o por extensión.

Acto seguido hay que crear un objeto de la clase VideoWriter y lo abrimos (no te preocupes si no entiendes qué significa todo esto):

objeto_video = VideoWriter('nombre.avi');
open(objeto_video);

Ahora llega el bucle. Pero antes ensayaremos a cargar la imagen con imread y después insertarla en el objeto:

fotograma = imread(lista_archivos(1,:));
writeVideo(objeto_video, fotograma);

Si todo ha funcionado bien estas dos líneas de código se van a tener que repetir para cada una de las imágenes que tenemos en la lista de archivos. Como esta lista tiene unas dimensiones conocidas lo que haremos será usar un bucle for.

for i = 3:length(lista_archivos)
    fotograma = imread(lista_archivos(5,:));
    writeVideo(objeto_video, fotograma);
end

NOTA: seguramente te habrás dado cuenta de que el bucle for no empieza en el primer elemento de la lista, esto es porque los dos primeros elementos de la lista son ‘.’ y ‘..’ (cosas del sistema de archivos y tal), la primera imagen está en la posición 3.

Y ya por último cerramos el objeto de vídeo:

close(objeto_video);

Y ya está. Se puede mejorar de mil maneras, por ejemplo podemos modificar los parámetros del video, la compresión, incluir un frame_skip si queremos que no coja todas las imágenes, meter una barra de progreso para tener una idea de por dónde va mientras se ejecuta, etc.

lista_archivos = ls;

objeto_video = VideoWriter('nombre.avi');
open(objeto_video);

for i = 3:length(lista_archivos)
    fotograma = imread(lista_archivos(i,:));
    writeVideo(objeto_video, fotograma);
end
close(objeto_video);


¿Alguna duda?

Escríbeme

Archivado en: Tutoriales Etiquetado como: animación, código, MATLAB

Interacciones del lector

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información sobre protección de datos

  • Responsable: Vicent Sanchis
  • Fin del tratamiento: Gestión de los comentarios para evitar spam
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  • Derechos: Acceso, rectificación, portabilidad, olvido.
  • Contacto: datos@vicentsanchis.com.
  • Información adicional: Más información en nuestra política de privacidad.

twitter linkedin
  • Aviso legal
  • Política de privacidad
  • Política de cookies

vicentsanchis.com 2021

Utilizamos cookies para darte la mejor experiencia en nuestra web.

Puedes informarte más sobre qué cookies estamos utilizando o desactivarlas en los AJUSTES.

Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.

Política de cookies

Más información sobre nuestra política de cookies (se abrirá en una nueva pestaña)

Powered by  GDPR Cookie Compliance