Das Projekt: Fügen Sie jedem einzelnen Frame eines Videos einen laufenden Datums- / Zeitstempel hinzu. (Das Ergebnis der digitalen Videokamera, und mein Vater fragte mich, wie er den Zeitstempel (zu der Millisekunden-Auflösung) dauerhaft zu dem Video hinzufügen kann.
Ein Freund hat mich auf opencv (eigentlich emgucv) hingewiesen, und wegen meiner Vorlieben habe ich mein Glück mit opencv in python versucht.
Die Dokumentation ist lahm, und ich hatte sogar harte Zeit (dauerte etwa 5 Stunden), nur um das Paket zu installieren. Quellen:
Ich arbeite an Windows 7 x64, also musste ich meinen Python herunterstufen, um mit numpy (keine numpy Version für win64) zu arbeiten.
Arbeiten mit PyCharm IDE.
Die resultierende Installation brachte mich dazu, die Datei C: \ Python27 \ Lib \ site-packages \ cv2.pyd
zu habenIch versuche eine Dokumentation zu finden, mit der ich anfangen kann zu arbeiten, aber ich bin sehr verwirrt und habe keine Ahnung, wo ich anfangen soll, alle Beispiele sind verwirrend - zB:
Meine Fragen:
Danke
Ihre Aufgabe sollte mit OpenCV und Python relativ einfach zu erledigen sein. Offenbar bist du neu bei OpenCV, also werde ich versuchen, meine Erklärung gründlich zu halten, aber frage mich, ob du Klarheit brauchst.
Ich bin mir nicht sicher, ob Sie Ihre Daten von einem Live-Kamera-Video-Feed erhalten oder ob Sie aufgezeichnete Aufnahmen nachbearbeiten. Wie auch immer ...
Daten abrufen Wenn Sie einen Live-Feed verwenden:
%Vor%Wenn Sie aufgenommenes Material verwenden:
%Vor% Initialisieren Sie den Videorekorder. Schauen Sie bei dieser Frage nach, um Hilfe bei Codecs zu erhalten - einen funktionierenden Codec zu finden nicht trivial. Ich benutze auch Windows 7 x64, und der unten erwähnte Codec war der einzige, der für mich funktionierte. Stellen Sie außerdem die Variable fps
so nah wie möglich an der tatsächlichen Videoframerate ein - Sie können sie nicht mehr ändern, nachdem Sie mit dem Schreiben von Frames begonnen haben.
Verarbeiten Sie diese Daten und fügen Sie Ihren Text hinzu. Schreiben Sie zuletzt den bearbeiteten Rahmen in eine Videodatei.
%Vor%So einfach ist das! Ich verwende den obigen Code, um fast täglich Text in Videodateien zu schreiben, also funktioniert es definitiv. Die einzigen möglichen Probleme, die ich vorhersehen kann, sind die Codecs, über die ich leider nicht viel weiß. Ich hoffe, dass dies Ihr Problem lösen kann, zögern Sie nicht, weitere Fragen zu stellen.
BEARBEITEN: Antworten auf die Fragen Ihres Kommentars.
1.) Soweit ich weiß, können Sie .avi nur verwenden, weil Sie mit OpenCV ein unkomprimiertes Format verwenden müssen. Ich fürchte, ich habe keine Ahnung von anderen (komprimierten) Formaten. Vielleicht könnten Sie ein Programm von Drittanbietern für die Vor- / Nachkonvertierung verwenden? Der Grund für die Ausnahme frame
war mein Fehler. Ich habe die Antwort bearbeitet, um die fehlende Zeile einzufügen.
2.) Ich fürchte, ich habe keine Ahnung, wie ich Metadaten lesen soll. Wenn ich es herausfinde, werde ich es dich wissen lassen. Meine eigene hashische Lösung zum Finden der Video-Framerate ist es, OpenCV einmal durch das Video laufen zu lassen, indem man das Time
-Modul benutzt, um die durchschnittliche Framerate zu berechnen. Diese Schätzung kann dann beim Schreiben der Videodatei verwendet werden.
3.) Ich habe festgestellt, dass die Größe des resultierenden Videos vom Original abhängig von mehreren Faktoren erheblich abweichen kann. Am wichtigsten ist, wie nahe das gewählte fps
der tatsächlichen Originalbildfrequenz entspricht.
4.) Wie für andere Schriftarten gibt es mehrere verfügbar. Ich kann Sie auf diese Frage
Verwendete hachoir-Metadaten , um Metadaten der Videodatei zu lesen (einschließlich Framerate, Höhe und Breite) .
Importieren:
%Vor%Funktion:
%Vor%Verwendung:
%Vor%um relevante Eigenschaften zu sehen:
%Vor%Tags und Links python opencv video-processing