2016-07-12 14 views
-1

Ich möchte einen Screenshot eines Videoframes nehmen und jeden Frame als Bild in einem Ordner auf meinem Desktop speichern. Es gibt jedoch nur bestimmte Frames, die ich erfassen möchte, die in ein Textdokument geschrieben werden.Speichern Sie extrahierte Videoframes als Bilder

Meine Frage ist, wie lese ich in den Rahmennummern in diesem Textdokument gespeichert und extrahiere nur diese Frames in PNG-Dateien?

Vielen Dank für Ihre Hilfe. Wenn ich etwas klären muss, bitte fragen.

frames = dlmread('Frames.txt'); 

%getting no of frames 
numFrames = mov.NumberOfFrames; 

%setting current status of number of frames written to zero 
numFramesWritten = 0; 

for t = frames: numFrames 
    currFrame = read(mov, t); %reading individual frames 
    opBaseFileName = sprintf('%3.3d.png', t); 
    opFullFileName = fullfile(opFolder, opBaseFileName); 
    imwrite(currFrame, opFullFileName, 'png'); %saving as 'png' file 
    progIndication = sprintf('Wrote frame %4d of %d.', t, numFrames); 
    disp(progIndication); 
    numFramesWritten = numFramesWritten + 1; 
end 
+0

Was Code bereits Sie haben ? Wie ist das Format Ihres Textdokuments? – hbaderts

+0

Der Code, den ich ändern möchte, ist eine for-Schleife, die jeden Frame als PNG-Datei extrahiert. Ich werde es dem Körper meiner Frage oben hinzufügen. Das Textdokument ist einfach eine Spalte mit Zahlen. Ich kann den Extrakt mit der ersten Zahl im Textdokument beginnen lassen, aber es wird nur um eins erhöht. Ich bin mir nicht sicher, wie ich diese Zahlen richtig durchlaufe. –

Antwort

0

Wenn ich verstehe Ihre Frage richtig:

... wie kann ich in den Rahmennummern lesen in diesem Text Dokument gespeichert und nur diese Frames PNG-Dateien extrahieren?

und unter der Annahme, dass ‚Rahmen‘ ist ein Vektor, der die Teilmenge von indicies der gewünschten Filmbilder enthält, dann alles, was Sie tun müssen, ist die for-Schleife ändern

for t = frames 
+0

Ich bekomme den folgenden Fehler, wenn ich dies versuche: "Frame-Bereich muss ein 1x2 Vektor von Frame-Indizes mit dem ersten Wert kleiner oder gleich dem zweiten Wert sein. Ein Frame-Index muss ein numerischer Wert größer als Null und weniger sein gleich oder gleich der Anzahl der Frames in der Datei. " Frames ist von Klasse Double, beim Einchecken in Matlab, Ist das das Problem? Vielen Dank. –

+0

Welche Zeile gibt Ihnen diesen Fehler? –

+0

Dies tritt auf, wenn ich versuche, das Video zu lesen. 'currFrame = lesen (mov, t);' –

Verwandte Themen