Extrahieren von Frames aus Video mit MATLAB

Ammar Ali 29 November 2021
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:

Videorahmen

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.

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