Не удается прочитать или воспроизвести видео в OpenCV + Python с помощью VideoCapture

import cv2
import numpy as np

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

retval, frame = cap.read()

print retval

================ RESTART: J:Python For DIPtraffic_video.py ================
False
>>> 

значение retval всегда False, что означает, что видео не читается командой. Это должно быть правдой для чтения кадров. Я не знаю, что делать. Однако, когда я использую веб-камеру по умолчанию, это оказывается правдой. Я пробовал много видео, и появляется та же проблема. Примечание: Я правильно установил ffmpeg.

Примечание: это не полный код, на этом шаге я только проверяю cap.read () либо True, либо False

2 ответов


этот метод гарантирован 100%

прежде всего проверьте свою версию OpenCV, скажем, например 2.4.11. вы можете проверить это, введя следующую команду в оболочке Python:

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

тогда перейдите в C:\opencv\build\x86\vc12\bin и копия opencv_ffmpeg2411.dll. Наконец, перейдите в корневой каталог Python ex:C:\Python27 и вставить opencv_ffmpeg2411.dll в нем

проверьте имя файла opencv_ffmpeg2411.dll, будь то версия opencv пишется или нет, если не делать следующее opencv_ffmpeg (версия вашего opencv без точек).dll файлы

после этого создайте новый файл Python и скопируйте этот код и вставьте его загрузить ваши собственные видео

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

у вас будет выходное видео, например, как это: результат


Поиск корневого каталога Python может быть немного сложным. Я использую разработки enthought распространение и, поначалу, вставил opencv_ffmpeg файл в неправильный каталог Python.

неправильно:

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

правильно:

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

короче говоря, убедитесь, что вы нашли правильный каталог Python.