Ich möchte Sie bitten, mir zu helfen, alle Bilder aus der Videodatei mit Emgu CV zu bekommen. Ich weiß, dass ich die Capture
-Klasse und ihre QueryFrame()
-Methode verwenden kann, aber das gibt nur ein Bild zurück. Was ist der einfachste Weg, um alle Bilder zu bekommen? (und speichern Sie es zum Beispiel in Image<Bgr, Byte>[]
) Ich brauche alle Frames, um etwas mehr Verarbeitung zu tun (um genauer zu sein: Schlüsselrahmenextraktion für Videozusammenfassung).
Vielen Dank für Ihre Hilfe.
Siehe meine Antwort hier als Referenz Emgu Capture spielt Video super schnell
Aber das sollte tun, wie Sie fragen, ich habe eine Liste verwendet, um die Bilder zu speichern, die Sie ein Array verwenden können, aber Sie müssen wissen, wie groß Ihre AVI-Datei ist.
%Vor%Dies wurde entworfen, um die Wiedergabe der Videodatei mit einer verantwortlichen Rate zu erlauben, aber während Sie einfach konvertieren, können Sie die Application.Idle-Methode genauso einfach so verwenden ...
%Vor%Sie müssen auf das Ende des Dateifehlers achten, Sie erhalten einen Fehler. Sie können immer eine try catch-Anweisung verwenden, um den spezifischen Fehler abzufangen, den es gibt, anstatt die Konvertierung einfach zu beenden.
Wenn Sie ein Bild-Array verwenden, müssen Sie die Datei inkrementieren, indem Sie eine Variable inkrementieren und die Frames zählen und dann das Image-Array erstellen, bevor Sie die Videodatei in ein Array konvertieren.
[EDIT]
Wie gewünscht, ist dies eine Methodenversion, um alle Bilder aus einer Videodatei abzurufen, die ich nicht in einer großen Videodatei getestet habe, da ich erwarte, dass das Programm abstürzen würde, da es viel Speicher benötigt.
%Vor%Alternativ stelle ich fest, dass Sie vielleicht 10 Sekunden Video von einer Webcam aufnehmen möchten, damit diese Methode das macht. Ich benutzte eine Stoppuhr, da die While-Schleife die Verwendung eines Timers verbietet, es sei denn, die Anwendung wird mit mehreren Threads bearbeitet > %Vor%
und das würde so heißen:
%Vor%Hoffe, das hilft,
Prost,
Chris
Auch ich hatte das gleiche Problem.So initialisierte ich einen weiteren Timer und stellte dort den Videospeichercode zur Verfügung. Und dieser Timer ist nur aktiviert, wenn die Aufnahmetaste [Die Schaltfläche auf dem Formular, auf dem das Video aufgezeichnet wird] angeklickt wird. Jetzt kann ich Video aufnehmen, aber das Audio wird nicht aufgenommen.