2016-11-28 3 views
0

Ich habe ein kurzes Skript gemacht, das die Anfänge eines Zauberwürfel-Timers ist, aber wenn ich das aufgezeichnete Video wiedergebe, wird es extrem beschleunigt.Python OpenCV Videoaufnahme schnell vorwärts

Meine Webcam ist eine 'Creative Labs Live! Cam Chat HD' und hat eine Auflösung von 1280 * 720 Pixel, Seitennotiz; Wenn ich versuche, die Skriptcodierung in dieser Auflösung auszuführen, schlägt die Wiedergabe fehl und die Bildrate beträgt 30 fps.

Unten ist der Code und ein Link eines Videos, das den Effekt zeigt.

from time import clock as t 
import time 
import cv2 
import numpy as np 
cap = cv2.VideoCapture(0) 
fourcc = cv2.VideoWriter_fourcc(*"XVID") 
out = cv2.VideoWriter("output.avi", fourcc, 30.0, (640, 480)) 
timing = False 

while True: 
    ret, frame = cap.read() 
    #frame = cv2.flip(frame, 1) 
    cv2.imshow("frame", frame) 

    if timing: 
     out.write(frame) 

    if cv2.waitKey(1) & 0xFF == ord(" "): 
     if timing: 
      after = t() 
      break 
     else: 
      timing = True 
      start = t() 

cap.release() 
out.release() 
cv2.destroyAllWindows() 

print(after - start) 

Example of the accelerated video.

+0

Für Start, fest einprogrammiert Wechsel 30 fps zu vielleicht 20 und sagen Sie uns das Ergebnis – Aleksandar

Antwort

0

Sie sind bei 30 fps, und Ihre Webcam möglicherweise nicht Aufzeichnung mit 30 fps Schreiben ausgegeben. Deshalb ist dein Video schnell. Finde die richtigen fps und die Ausgabe wird normal sein.

Suche Framerate wie fps = cap.get (cv2.CAP_PROP_FPS) für opencv> = 3

+0

ich versucht, aber es hat nicht funktioniert da meine Webcam tatsächlich mit 30fps läuft. Das war mein erster Gedanke. –