2009-07-22 18 views
4

Ich schreibe ein Video mit OpenCV auf Linux-Maschine. Ich möchte das gleiche Video mit OpenCV auf einem Windows-Rechner lesen. Ich kann dies nicht mit den Standard-Codecs tun, die in openCV bereitgestellt werden.OpenCV Videos über Plattform

Kann jemand vorschlagen, wie ich Videos über die zwei Plattformen lesen/schreiben kann?

Antwort

1

Ich glaube nicht, dass das Problem mit OpenCV ist, ich denke, es ist mit Codecs, wie Sie erwähnt haben. Ich glaube auch nicht, dass OpenCV mit Codecs geliefert wird ... überprüfe, ob du die richtigen Codecs unter Windows installiert hast.

Haben Sie sich die Dokumentation unter video codecs angesehen?

2

Das OpenCV Wiki befasst sich direkt mit diesem Problem. Siehe http://opencv.willowgarage.com/wiki/VideoCodecs und speziell die Überschrift "Kompatibilitätsliste".

Leider sind die einzigen Codecs, die auf allen drei Plattformen (Linux, Windows & OSX) unterstützt werden, 'DIB' 'I420' und 'IYUV', die alle unkomprimierte Video-Codecs sind und somit für sehr große Dateigrößen sorgen.

Das Wiki listet auch einige Codecs auf, die auf zwei Plattformen funktionieren können, aber nicht auf allen dreien.

Wenn Sie sich entscheiden, unkomprimierte Videodateien zu verwenden, können Sie sie in etwas mit einer kleineren Dateigröße konvertieren, sobald sie auf Ihrem Windows-Computer mit einem Programm wie VirtualDub sind.


Edit: FYI, Unter Windows habe ich OpenCV Ausgabe in Motion-JPEG und dann verwende ich VirtualDub in Directkopiermodus die Datei erneut zu speichern, die einen Fehler mit dem Index des Films korrigiert. Diese M-JPEG-Videodateien werden dann standardmäßig auf Mac und Windows abgespielt.

Wenn ich versuche, Video in OpenCV zu lesen, werde ich oft zuerst mein Video in Cinepak umwandeln (mit virtual dub, quicktime usw.) und es dann in OpenCV einspeisen. Ich verwende Cinepak, weil Cinepak-Encoder aus irgendeinem Grund häufiger vorkommen als MJPEG-Encoder.

+0

Wie erhalten Sie opencv, um Motion-JPEG ausgeben zu können? Mine stürzt ab und sagt Codec nicht verfügbar. – andrewrk

+0

Dies ist die relevante Codezeile, die ich verwende. Ich bin auf Windows XP. 'exp-> Vid = cvCreateVideoWriter (FilmdateiName, CV_FOURCC ('M', 'J', 'P', 'G'), 30, cvSize (xdim, ydim), 0)' 'Ich denke (obwohl ich nicht bin positiv), dass der MJPEG-Encoder standardmäßig mit OpenCV ausgeliefert wird. Ich nahm immer an, dass es die MJPEG-Implementierung von OpenCV war, die die Index-Datei durcheinander brachte, weshalb ich einen zweiten Durchlauf und eine Direkt-Stream-Kopie mit VirtualDub machen muss, bevor irgend ein anderer Video-Player es lesen kann. – AndyL

Verwandte Themen