Extraire des images d'une vidéo à l'aide de MATLAB
Ce tutoriel abordera l’extraction des images d’une vidéo à l’aide de la fonction read()
dans Matlab.
Extraire des images d’une vidéo à l’aide de la fonction read()
dans MATLAB
Une vidéo est composée de plusieurs images. En d’autres termes, il est composé d’images, donc lorsque des images ou des cadres se répètent les uns après les autres, nous verrons une vidéo jouer. Par exemple, supposons qu’une vidéo soit composée de 60 images par seconde, ce qui signifie qu’il y aura 60 images en une seule seconde. Les images changent si vite que nous ne voyons qu’une vidéo en cours de lecture. Tout d’abord, nous devons lire la vidéo dans Matlab à l’aide de la fonction VideoReader()
. Après cela, nous devons trouver le nombre total d’images présentes dans la vidéo à l’aide de la propriété NumberOfFrames
. Nous utiliserons une boucle for, qui commencera à partir de 1 et se terminera au nombre maximum d’images dans la vidéo. Maintenant nous allons retrouver chaque frame présente dans la vidéo et les montrer sur un plot en utilisant la fonction subplot()
et imshow()
. Par exemple, lisons une vidéo et extrayons toutes ses images dans Matlab. Voir le code ci-dessous.
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
Production:
Dans le code ci-dessus, la variable NPF
définit le nombre de lignes et de colonnes dans la figure ci-dessus. Nous pouvons également enregistrer chaque image sous forme d’image dans un dossier en utilisant la fonction imwrite()
. Voir le code ci-dessous.
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
Le code ci-dessus enregistrera toutes les images présentes dans la vidéo sous forme d’images au format de fichier .png
dans le même répertoire que le fichier de script. Vous pouvez également modifier le nom du fichier et l’extension de fichier de l’image. Si vous ne souhaitez pas extraire toutes les images de la vidéo et que vous souhaitez extraire uniquement la première image de la vidéo. Pour ce faire, vous devez changer le deuxième argument de la fonction read()
à 1 comme read(v,1)
. Si vous voulez extraire la dernière image de la vidéo, vous devez changer le deuxième argument en inf
comme read(v,inf)
. Si vous souhaitez extraire une plage spécifique d’images de la vidéo, vous devez changer le deuxième argument en vecteur. Par exemple, vous pouvez utiliser la fonction read(v,[5 10])
pour lire les images de 5 à 10 de la vidéo v
.