Extraer fotogramas de video usando MATLAB

Ammar Ali 29 noviembre 2021
Extraer fotogramas de video usando MATLAB

Este tutorial discutirá la extracción de fotogramas de un video usando la función read() en Matlab.

Extraer fotogramas de un video usando la función read() en MATLAB

Un video se compone de muchos fotogramas. En otras palabras, está compuesto por imágenes, por lo que cuando las imágenes o los fotogramas se repiten una tras otra, veremos un video en reproducción. Por ejemplo, suponga que un video se compone de 60 cuadros por segundo, lo que significa que habrá 60 cuadros en un solo segundo. Los fotogramas cambian tan rápido que solo vemos un video en reproducción. Primero que nada, necesitamos leer el video en Matlab usando la función VideoReader(). Después de eso, necesitamos encontrar el número total de cuadros presentes en el video usando la propiedad NumberOfFrames. Usaremos un bucle for, que comenzará desde 1 y terminará en el número máximo de fotogramas en el video. Ahora encontraremos cada fotograma presente en el video y los mostraremos en un gráfico usando la función subplot() e imshow(). Por ejemplo, leamos un video y extraigamos todos sus fotogramas en Matlab. Vea el código a continuación.

v = VideoReader('bon_fire_dog_2.mp4');
totalFrames = v.NumberOfFrames;
NFP = ceil(sqrt(totalFrames));
for i=1:totalFrames
frame = read(v,i);
subplot(NFP,NFP,i)
imshow(frame)
end

Producción:

Fotogramas de video

En el código anterior, la variable NPF establece el número de filas y columnas en la figura anterior. También podemos guardar cada fotograma como una imagen dentro de una carpeta usando la función imwrite(). Vea el código a continuación.

v = VideoReader('bon_fire_dog_2.mp4');
totalFrames = v.NumberOfFrames;
NFP = ceil(sqrt(totalFrames));
for i=1:totalFrames
frame = read(v,i);
ImgName = strcat(int2str(i),'.png');
imwrite(frame, ImgName);
end

El código anterior guardará todos los fotogramas presentes en el video como imágenes con formato de archivo .png dentro del mismo directorio que el archivo de script. También puede cambiar el nombre del archivo y la extensión del archivo de la imagen. Si no desea extraer todos los fotogramas del video y desea extraer solo el primer fotograma del video. Para hacer eso, tienes que cambiar el segundo argumento de la función read() a 1 como read(v,1). Si desea extraer el último fotograma del video, debe cambiar el segundo argumento a inf como read(v,inf). Si desea extraer un rango específico de fotogramas del video, debe cambiar el segundo argumento a vector. Por ejemplo, puede utilizar la función read(v,[5 10]) para leer los fotogramas del 5 al 10 del vídeo v.

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook