OpenCV 2.4 in python - Video-Verarbeitung
Des Projekts: Fügen Sie eine laufende Datums - /Zeitstempel für jeden frame des Videos. (Das Ergebnis der digital-video-Kamera, und mein Vater mich fragte, wie kann er den Zeitstempel(auf der Millisekunden-Auflösung) dauerhaft auf das video.
Ein Freund wies mich auf opencv (emgucv eigentlich) , und, weil von meinen Vorlieben, die ich versuchte mein Glück mit opencv in python.
Die Dokumentation ist lahm, und ich hatte auch harte Zeit(hat mich wie 5 Stunden oder so), einfach um das Paket zu installieren.
Quellen:
- OpenCV 2.4 (willow garage): http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.2/
- Numpy (ich habe gar nicht verstanden, was es zu tun oder warum benötigt): http://sourceforge.net/projects/numpy/files/NumPy/1.6.2/numpy-1.6.2-win32-superpack-python2.7.exe/download
- Active Python 2.7: http://downloads.activestate.com/ActivePython/releases/2.7.2.5/ActivePython-2.7.2.5-win32-x86.msi
Arbeite ich auf Windows 7 x64 , also musste ich downgrade mein python arbeiten mit numpy(kein numpy-version für win64)
Arbeite mit PyCharm IDE.
Die resultierende installation hab mir die Datei C:\Python27\Lib\site-packages\cv2.pyd
Ich bin auf der Suche nach Dokumentation zu arbeiten, aber ich bin sehr verwirrt und habe keine Ahnung, wo zu beginnen, alle Beispiele sind verwirrend - ie:
- Die "offizielle" Dokumentation ist für c/c++, keine python Referenzen: http://docs.opencv.org/doc/user_guide/ug_mat.html
- Beispiel für python, das scheint vernünftig, aber nicht in der Nähe, was ich brauche: Python, OpenCV 2.4 schreibt die Hälfte-die komplette PNG-video-frames
- Beispiel, dass in der Nähe, was ich brauche, aber nicht logisch erscheinen(cv und nicht cv2 ???): Schreiben Sie video mit OpenCV + Python + Mac
Meine Fragen:
- Mache ich etwas falsch? Ist das nicht die Möglichkeit zur Installation von opencv?
- Wo finde ich gute Dokumentation?
- Glaube, ich habe meinen text fertig ist(in einem string) kann jemand versuchen, mir zu helfen, mit einem start-zu meiner Anwendung?
Dank
- Schauen Sie in SimpleCV als als eine mögliche alternative.
- Ich werde es versuchen, aber ich habe schon Analyse Ihrer website und es sieht aus wie es gibt zu wenig Dokumentation. und ich weiß wirklich nicht verstehen, die Sache mit der interaktiven shell(muss ich funktionieren? kann ich nur über ein python-script?)
- Ich glaube nicht, verwenden Sie die interaktive shell. Die Dokumentation ist nur da, um Ihnen zu zeigen, dass die Funktionen vorhanden, aber der rest der Funktionen ist selbsterklärend.
- ahhhh. die einfache cv installation pack installiert es sich von selbst falsch( einige Pakete in meinem 2.7.2 und einige in der neuen python-2.7.3-Bibliothek)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Aufgabe sollte relativ einfach zu bewerkstelligen mit OpenCV und Python. Es scheint, dass Sie neu sind, OpenCV, also ich werde versuchen und halten meine Erklärung gründlich, aber fühlen Sie sich frei zu Fragen, wenn Sie brauchen Klarheit.
Ich bin nicht sicher, ob Sie bekommen Ihre Daten von einem live-Kamera-video-feed, oder sind das post-processing aufgenommene Material. So oder so...
Daten Holen.
Wenn Sie einen live-feed:
Wenn mit aufgenommene Material:
Initialisieren video-Schriftsteller. Schauen auf diese Frage für die Hilfe mit codecs zu finden, arbeitet codec ist nicht trivial. Ich bin mit Windows 7 x64 und den unten genannten codec war die einzige, die für mich gearbeitet. Auch, setzen Sie die variable
fps
möglichst nahe an der tatsächlichen eingehende video-framerate wie möglich - Sie können nicht ändern, sobald Sie begonnen haben, zu schreiben-frames.Verarbeiten diese Daten und fügen Sie Ihren text ein. Schließlich schreiben Sie das bearbeitete Bild in ein video-Datei.
So einfach ist das! Ich verwende den obigen code um text, um video-Dateien fast täglich, so dass es funktioniert definitiv. Die einzige potenzielle Probleme, die ich voraussehen können, sind mit den codecs, die ich leider nicht wissen viel über. Ich hoffe, dass dies möglicherweise Ihr problem lösen, fühlen Sie sich frei, um weitere Fragen zu stellen.
EDIT: Antworten zu Ihrem Kommentar Fragen.
1.) Soweit ich weiß, können Sie nur verwenden .avi, da man ein Unkomprimiertes format mit OpenCV. Ich fürchte, ich habe keine Kenntnisse mit anderen (Druck -) Formate. Vielleicht könnten Sie verwenden ein Drittanbieter-Programm zu tun, pre/post-Konvertierung? Der Grund für die
frame
Ausnahme war mein Fehler, ich habe bearbeitet, die Antwort auf die fehlende Linie.2.) Ich fürchte, ich habe keine Ahnung, wie Lesen von Metadaten. Wenn ich herausfinde, lasse ich es Euch wissen. Meine eigenen hackish-Lösung für die Suche nach video-framerate zu lassen OpenCV durch das video einmal mit der
Time
Modul zur Berechnung der durchschnittlichen framerate. Diese Schätzung kann dann verwendet werden, wenn das schreiben der video-Datei.3.) Ich habe festgestellt, dass die Größe des resultierenden Videos können erheblich abweichen von der ursprünglichen abhängig von mehreren Faktoren ab, der wichtigste davon ist, wie nah die gewählte
fps
war, um den tatsächlichen originalen framerate.4.) Wie für andere Schriftarten, es gibt mehrere zur Verfügung. Ich kann verweisen Sie auf diese Frage für einen schnellen überblick. Hier ist die entsprechende Dokumentation:
cv.putText()
Sie nicht-keyword-Argumenten nach einem Schlüsselwort-argument. Auch obwohl iYUV erzeugt eine Datei für mich, es spielt nicht in VLC so ist es wahrscheinlich nicht die beste Wahl! Edit: Da sollte es IYUV nicht iYUV.Verwendet hachoir-Metadaten zum Lesen der Metadaten von video-Datei(einschließlich Framerate, Breite und Höhe .
importieren:
Funktion:
Verwendung:
sehen die relevanten Eigenschaften: