web-dev-qa-db-de.com

Videos können in OpenCV + Python nicht mit VideoCapture gelesen oder wiedergegeben werden

import cv2
import numpy as np

cap = cv2.VideoCapture('traffic.avi')

retval, frame = cap.read()

print retval

================ RESTART: J:\Python For DIP\traffic_video.py ================
False
>>> 

Der Wert von retval ist immer False, dh das Video wird vom Befehl nicht gelesen. Es muss "True" sein, um Frames lesen zu können. Ich weiß nicht was ich tun soll. Wenn ich jedoch meine Standard-Webcam verwende, wird sie als wahr angezeigt. Ich habe viele Videos ausprobiert und das gleiche Problem erscheint. Hinweis: Ich habe den ffmpeg korrekt installiert.

Hinweis: Dies ist nicht der vollständige Code. In diesem Schritt validiere ich nur cap.read () entweder True oder False

7
Tes3awy

Diese Methode ist zu 100% garantiert

Überprüfen Sie zunächst Ihre Version von OpenCV, zum Beispiel 2.4.11. Sie können dies überprüfen, indem Sie die folgenden Befehle in Ihre Python-Shell eingeben:

>>> from cv2 import __version__
>>> __version__
'2.4.11'
>>> 

Gehen Sie dann zu C:\opencv\build\x86\vc12\bin und kopieren Sie opencv_ffmpeg2411.dll____. Gehen Sie schließlich in das Stammverzeichnis von Python ex: C:\Python27 und fügen Sie opencv_ffmpeg2411.dll ein

Überprüfen Sie den Namen der Datei opencv_ffmpeg2411.dll auf die Version von opencv wird geschrieben oder nicht, wenn nicht, tun Sie Folgendes opencv_ffmpeg (Version Ihrer opencv ohne Punkte) .dll

Erstellen Sie anschließend eine neue Python-Datei, kopieren Sie diesen Code und fügen Sie ihn ein. Laden Sie Ihr eigenes Video

import numpy as np
import cv2

# Capture video from file
cap = cv2.VideoCapture('your video')

while True:

    ret, frame = cap.read()

    if ret == True:

        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

        cv2.imshow('frame',gray)


        if cv2.waitKey(30) & 0xFF == ord('q'):
            break

    else:
        break

cap.release()
cv2.destroyAllWindows()

sie erhalten beispielsweise ein Ausgabevideo: Ergebnis

13
Tes3awy

Das Wurzelverzeichnis von Python zu finden, kann etwas schwierig sein. Ich verwende eine Enthought - Distribution und füge die opencv_ffmpeg-Datei zuerst in das falsche Python-Verzeichnis ein. 

FALSCH:

C:\Users\USERNAME\AppData\Local\Programs\Python\Python35-32

RECHT:

C:\Users\USERNAME\AppData\Local\Enthought\Canopy\User

Kurz gesagt, stellen Sie sicher, dass Sie das richtige Python-Verzeichnis finden.

1
P__2