Extrahieren von Frames aus Video mit MATLAB
In diesem Tutorial wird das Extrahieren der Frames eines Videos mit der Funktion read()
in Matlab erläutert.
Extrahieren von Frames aus einem Video mit der Funktion read()
in MATLAB
Ein Video besteht aus vielen Frames. Mit anderen Worten, es besteht aus Bildern. Wenn Bilder oder Frames nacheinander wiederholt werden, wird ein Video abgespielt. Angenommen, ein Video besteht aus 60 Bildern pro Sekunde, was bedeutet, dass eine einzelne Sekunde 60 Bilder enthält. Die Frames ändern sich so schnell, dass wir nur ein Video sehen, das abgespielt wird. Zuerst müssen wir das Video in Matlab mit der Funktion VideoReader()
lesen. Danach müssen wir die Gesamtzahl der im Video vorhandenen Frames mithilfe der Eigenschaft NumberOfFrames
ermitteln. Wir verwenden eine for-Schleife, die bei 1 beginnt und bei der maximalen Anzahl von Frames im Video endet. Jetzt finden wir jeden im Video vorhandenen Frame und zeigen ihn mit den Funktionen subplot()
und imshow()
auf einem Plot an. Lassen Sie uns zum Beispiel ein Video lesen und alle seine Frames in Matlab extrahieren. Siehe den Code unten.
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
Ausgabe:
Im obigen Code legt die Variable NPF
die Anzahl der Zeilen und Spalten in der obigen Abbildung fest. Wir können jeden Frame auch als Bild in einem Ordner speichern, indem wir die Funktion imwrite()
verwenden. Siehe den Code unten.
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
Der obige Code speichert alle im Video vorhandenen Frames als Bilder mit dem Dateiformat .png
im selben Verzeichnis wie die Skriptdatei. Sie können auch den Dateinamen und die Dateierweiterung des Bildes ändern. Wenn Sie nicht alle Frames aus dem Video extrahieren möchten, sondern nur den ersten Frame des Videos. Dazu müssen Sie das zweite Argument der Funktion read()
auf 1 wie read(v,1)
ändern. Wenn Sie den letzten Frame des Videos extrahieren möchten, müssen Sie das zweite Argument auf inf
wie read(v,inf)
ändern. Wenn Sie einen bestimmten Bereich von Frames aus dem Video extrahieren möchten, müssen Sie das zweite Argument in vector ändern. Mit der Funktion read(v,[5 10])
können Sie beispielsweise die Frames von 5 bis 10 aus dem Video v
auslesen.