2015-03-28 9 views
5

Ich habe gerade angefangen, python mit opencv zu programmieren. ich die folgende Seite von opencv 3.0.0 Tutorialpython opencv videowire schreibt kein video

Tutorial at read the docs

Als ich versuchte, das Beispiel zu verwenden, die Videos speichert, es funktioniert nicht. Es zeigt den Inhalt von der Webcam an und erstellt auch eine Datei namens output.avi, aber als ich die Größe von output.avi überprüft habe, waren es null Bytes. Ich habe auch versucht, verschiedene Codecs verwenden, wie YUY2

Ich benutze Python 2.7.8 und 3.0.0 opencv und Fenster 8.1

Antwort

2

Stellen Sie sicher, den richtigen fourcc 4-Byte-Code verwenden. Das Beispiel auf dem Tutorial hat:

fourcc = cv2.VideoWriter_fourcc(*'XVID') 
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480)) 

Dieser 'XVID' Code funktioniert möglicherweise nur für Linux. Die Dokumentation über dem Beispiel besagt (im Tutorial): "In Windows: DIVX (Mehr zu testen und hinzugefügt)." Also, wenn Sie nicht haben, versuchen Sie die fourcc Linie oben mit dem Ersetzen:

fourcc = cv2.VideoWriter_fourcc(*'DIVX') 

Ich benutze cv2.VideoWriter auf Linux sehr oft und es funktioniert immer. Also, wenn das obige nicht funktioniert, können Sie es immer auf einem Linux-VM versuchen.

+0

Leider kann ich es nicht zur Arbeit bringen.DIVX funktioniert nicht für mich. Danke fürs Helfen. – Zachzhao

+0

CV2 nutzt ffmpeg. Es könnte sein, dass cv2 die Anwendung nicht findet. – Scott

+0

Ich habe meinen Code durchgesehen und festgestellt, dass ich folgende Zeile habe: fourcc = cv2.cv.CV_FOURCC ('X', 'V', 'I', 'D'). Dies ist für einen Linux-VM, aber Sie könnten entsprechende Änderungen vornehmen und es versuchen. Ich weiß nicht, wo ich diesen Code ursprünglich gefunden habe, aber es funktioniert für mich. – Scott

-1

Es sollte ein Problem mit dem Codec sein, den Sie verwenden.

Haben Sie versucht:

cv.CV_FOURCC('i', 'Y', 'U', 'V')

Dieses ist für mich gearbeitet.

6

Ersetzen:

fourcc = cv2.VideoWriter_fourcc(*'XVID') 

mit:

fourcc = cv2.VideoWriter_fourcc('M','J','P','G') 

für mich gearbeitet ...

Allgemeiner:

den fourcc Code des Videokompressionsformat nachschlagen Sie nach here, und was auch immer der Code ist - zum Beispiel 'FMP4' für FFMpeg - p lug es in der folgenden Weise in:

cv2.VideoWriter_fourcc ('F', 'M', 'P', '4')

1

hatte ich das gleiche Problem und i löste es durch den Videoausgang Angabe Auflösung auf genau die gleiche wie Eingang:

cap = cv2.VideoCapture('vtest.avi') 
... 
out = cv2.VideoWriter('output.avi',fourcc, 20.0,(int(cap.get(3)),int(cap.get(4)))) 

natürlich stellen Sie sicher, bekam man ffmpeg installiert und arbeiten.

0

Auf Windows 7 und mit Python 2.7 und OpenCV 2.4.8, erfuhr ich die Tatsache, dass, wenn die Datei NAME "output.mpg" nicht schreiben wird.

Ich löste es durch den Wechsel zu "output.avi".