Я бег следующего кода:cv2.VideoCapture на питоне
import numpy as np
import cv2
import os
count = 0
cap = cv2.VideoCapture("/home/simon/PROJECT/real_data/00000020.mp4")
while not cap.isOpened():
cap = cv2.VideoCapture("./00000020.mp4")
cv2.waitKey(1000)
print "Wait for the header"
pos_frame = cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
while True:
flag, frame = cap.read()
if flag:
# The frame is ready and already captured
cv2.imshow('video', frame)
pos_frame = cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
print str(pos_frame)+" frames"
else:
# The next frame is not ready, so we try to read it again
cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, pos_frame-1)
print "frame is not ready"
# It is better to wait for a while for the next frame to be ready
cv2.waitKey(1000)
if cv2.waitKey(10) & 0xFF == 27:
break
if cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES) == cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT):
# If the number of captured frames is equal to the total number of frames,
# we stop
break
if ret == True:
frame = cv2.VideoCapture.grab()
frame = 'frame%d' % count
cv2.imwrite('frame%d.png', frame)
count += 1
else:
print 'stopped at' + count
break
И всякий раз, когда я запускаю его, он петли на время не петля, печать «ждать заголовка». Никогда не появляется код ошибки или что-то в этом роде.
Я попытался запустить его как более простой фрагмент кода, где он не имеет всех этих проверок, и снова это не вызывает никаких ошибок.
Я пытаюсь запустить этот код, чтобы открыть видео, а затем сохранить кадры в виде png-файлов по всему видео.
Есть ли какие-либо особые проблемы с кодом? Или же кто-нибудь знает кусок кода, который будет делать то, что я хочу более эффективно, так как я тралил через Google поиск и стек переполнению много в последнее время и не нашел ничего
Спасибо заранее Panda
Я уже установлен FFmpeg, и я проверил для тех, кто, прежде чем я писал здесь :) Спасибо за совет, хотя. Знаете ли вы, требуется ли столько же времени для обработки, сколько длина видео? – pandasarebest
Насколько я знаю, он должен сразу начать чтение. Проблема с заголовком, насколько я знаю, состоит в том, что он не может декодировать видео, обычно потому, что opencv не находит библиотеки DLL. –