web-dev-qa-db-fra.com

Impossible de lire ou de lire une vidéo dans OpenCV + Python avec VideoCapture

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
>>> 

La valeur de retval est toujours False, ce qui signifie que la vidéo n'est pas lue par la commande. Il doit être vrai pour lire les cadres. Je ne sais pas quoi faire. Cependant, lorsque j'utilise ma webcam par défaut, il s'avère être vrai. J'ai essayé beaucoup de vidéos et le même problème apparaît. Remarque: j'ai correctement installé le ffmpeg.

Note: Ce n'est pas le code complet, dans cette étape, je ne valide que cap.read () True ou False

7
Tes3awy

Cette méthode est garantie à 100%

tout d’abord, vérifiez votre version d’OpenCV, par exemple 2.4.11. vous pouvez le vérifier en tapant les commandes suivantes dans votre shell Python:

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

Ensuite, allez à C:\opencv\build\x86\vc12\bin et copiez opencv_ffmpeg2411.dll. Enfin, allez au répertoire racine de Python ex: C:\Python27 et collez opencv_ffmpeg2411.dll dans celui-ci.

vérifiez le nom du fichier opencv_ffmpeg2411.dll, que ce soit la version d’opencv est écrit ou non, sinon procédez comme suit opencv_ffmpeg (version de votre opencv sans points) .dll

Après cela, créez un nouveau fichier Python, copiez ce code et collez-le en chargeant votre propre vidéo.

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()

vous aurez une sortie vidéo par exemple comme ceci: Résultat

13
Tes3awy

Trouver le répertoire racine de Python peut être un peu délicat. J'utilise une distribution Enthought et, au début, j'ai collé le fichier opencv_ffmpeg dans le mauvais répertoire Python. 

FAUX:

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

DROITE:

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

Bref, assurez-vous de trouver le bon répertoire Python.

1
P__2