воспроизведение видеофайла с использованием python opencv

Я пытаюсь воспроизвести видеофайл с помощью python opencv, это мой код, но он не показывает файл vidfeo, когда я запускаю код

import numpy as np
import cv2

cap = capture =cv2.VideoCapture('C2.mp4')
while(cap.isOpened()):
    ret, frame = cap.read()

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

    cv2.imshow('frame',gray)
    cv2.waitKey(1)

cap.release()
cv2.destroyAllWindows()

Я попробовал ответ в: link, но не работает опять таки


person Musa    schedule 24.11.2015    source источник
comment
почему cap = capture = .... ? вы входите в цикл while?   -  person Miki    schedule 24.11.2015


Ответы (7)


Я думаю, вам просто нужно увеличить число внутри функции cv2.waitKey() до 25 или 30. Вы должны получить желаемый результат.

Также не нужно писать cap=capture=cv2.......

Просто, написав,

cap = cv2.videoCapture('путь к видео')

тоже должно работать. Надеюсь, что это работает.

person aamer aamer    schedule 09.11.2016
comment
Это ответ на вопрос! Сравните код вопроса с руководством по OpenCV: opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/ - person ppasler; 07.12.2016

Этот код работал для меня. Он показывает как исходный, так и полутоновый видеовыход. Нажмите «q», чтобы выйти. Я также не видел необходимости в cap = Capture... в вашем коде.

import cv2
import numpy as np

cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
    gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame',frame)
    cv2.imshow('grayF',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
         break

cap.release()
cv2.destroyAllWindows()
person Suhas Sreenivas    schedule 17.01.2017

Попробуйте использовать это

cv.CaptureFromFile()

а также ознакомьтесь с этой ссылкой http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_gui/py_video_display/py_video_display.html

person Programmer    schedule 24.11.2015
comment
Да, но в нем есть детали - person Programmer; 25.11.2015

Прежде всего, нет необходимости в захвате, поскольку вы не используете захват в своем коде. Причина, по которой ваш видеофайл не отображается, заключается в том, что вы не сохранили его в том же каталоге, где вы сохранили код.

Вы можете указать путь, по которому сохранен ваш файл, как показано ниже.

cap = cv2.VideoCapture('(path to the video file)/cv2.mp4')

Опять же нужно изменить аргумент внутри waitKey иначе программа не закроет окно корректно отображающее видео.

Попробуйте следующее, это обязательно сработает. Поместите оператор if с функцией waitKey() и увеличьте аргумент, указывающий количество миллисекунд, в течение которых он будет ожидать ключевую функцию, до 25 или любого другого числа, которое вам может понравиться, чтобы при нажатии клавиши ESC окно было уничтожено:

if cv2.waitKey(25) & 0xFF == 27:
  break
person minakshi das    schedule 11.07.2018

Проблема в моем коде была в части (While). Это должно быть while (True), а не то, что в вашем коде.

person soha samy    schedule 17.03.2020

ren opencv_ffmpeg.dll в opencv_ffmpeg2413.dll в каталоге вашего проекта, если opencv-2.4.13.exe

person user7845696    schedule 10.04.2017

person    schedule
comment
Добро пожаловать в СО! Можете ли вы добавить небольшое объяснение того, как это решает проблему ОП? - person naught101; 17.02.2017