Extraia quadros de vídeo usando MATLAB

Ammar Ali 29 novembro 2021
Extraia quadros de vídeo usando MATLAB

Este tutorial irá discutir a extração dos quadros de um vídeo usando a função read() no Matlab.

Extraia quadros de um vídeo usando a função read() no MATLAB

Um vídeo é composto de muitos quadros. Em outras palavras, ele é composto de imagens, portanto, quando imagens ou quadros forem repetidos um após o outro, veremos um vídeo sendo reproduzido. Por exemplo, suponha que um vídeo seja composto de 60 quadros por segundo, o que significa que haverá 60 quadros em um único segundo. Os frames mudam tão rápido que vemos apenas um vídeo sendo reproduzido. Em primeiro lugar, precisamos ler o vídeo em Matlab usando a função VideoReader(). Depois disso, precisamos encontrar o número total de quadros presentes no vídeo usando a propriedade NumberOfFrames. Usaremos um loop for, que começará em 1 e terminará no número máximo de quadros do vídeo. Agora vamos encontrar cada quadro presente no vídeo e mostrá-los em um gráfico usando as funções subplot() e imshow(). Por exemplo, vamos ler um vídeo e extrair todos os seus frames no Matlab. Veja o código abaixo.

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

Resultado:

Quadros de vídeo

No código acima, a variável NPF define o número de linhas e colunas na figura acima. Também podemos salvar cada quadro como uma imagem dentro de uma pasta usando a função imwrite(). Veja o código abaixo.

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

O código acima salvará todos os quadros presentes no vídeo como imagens com formato de arquivo .png dentro do mesmo diretório do arquivo de script. Você também pode alterar o nome do arquivo e a extensão do arquivo da imagem. Se você não deseja extrair todos os quadros do vídeo e deseja extrair apenas o primeiro quadro do vídeo. Para fazer isso, você deve alterar o segundo argumento da função read() para 1 como read(v,1). Se você quiser extrair o último quadro do vídeo, você deve alterar o segundo argumento para inf como read(v,inf). Se quiser extrair um intervalo específico de quadros do vídeo, você deve alterar o segundo argumento para vetor. Por exemplo, você pode usar a função read(v,[5 10]) para ler os quadros de 5 a 10 do 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