2016-09-21 2 views
1

Ich möchte aus einer Videodatei ein Bild nach jeweils 10 Sekunden erfassen, also wenn mir jemand dafür helfen kann, werde ich sehr dankbar sein. meine Python-Code ist wie folgt aus:ein Bild von einer Videodatei nach jeweils 10 Sekunden erfassen

import cv2 


print(cv2.__version__) 
vidcap = cv2.VideoCapture('Standoff.avi') 
vidcap.set(cv2.CAP_PROP_POS_MSEC,96000) 
success,image = vidcap.read() 
count = 0 
success = True 
while success: 
    success,image = vidcap.read() 
    print 'Read a new frame: ', success 
    cv2.imwrite("frame%d.jpg" % count, image)  # save frame as JPEG file 
    cv2.waitKey(200) 
    count += 1 
+0

können Sie erklären, das Problem, das Sie haben mit Ihrem aktuellen Code verwenden? – Mick

Antwort

0

Wenn Sie die Framerate des Videos aus der Datei die folgenden sollte funktionieren bekommen (haben Sie müssen die Syntax überprüfen, wie ich es nicht getestet):

import numpy as np 
import cv2 

cap = cv2.VideoCapture('Standoff.avi') 
framerate = cap.get(cv2.cv.CV_CAP_PROP_FPS) 
framecount = 0 

while(True): 
    # Capture frame-by-frame 
    success, image = cap.read() 
    frame count += 1 

    # Check if this is the frame closest to 10 seconds 
    if framecount = (framerate * 10) 
     framecont = 0 
     cv2.imshow('image',image) 

    # Check end of video 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
      break 

# When everything done, release the capture 
cap.release() 
cv2.destroyAllWindows() 
+0

Vielen Dank, es gibt mir eine Idee über die Lösung. –

1

Hier bin ich Fassungsrahmen nach 10 Umwandlung von frames.you können Zeitfunktion und in ähnlicher Weise erfassen Frames, wenn Bedingungsanweisung

import cv2 

vidcap = cv2.VideoCapture('testing.mp4'); 
success,image = vidcap.read() 
count = 0 
success = True 

while success: 
    success,image = vidcap.read() 
    print('read a new frame:',success) 
    if count%10 == 0 : 
     cv2.imwrite('frame%d.jpg'%count,image) 
     print('success') 
    count+=1 
Verwandte Themen