我制作了一个简短的脚本,这是一个魔方立方计时器的开头,但是当我播放录制的视频时,它的速度非常快。
我的网络摄像头是'Creative Labs Live! Cam Chat HD',分辨率为1280 * 720像素,侧边音符;当我尝试运行脚本编码时,该分辨率播放失败,帧速率为30 fps。
以下是展示效果的视频代码和链接。
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)
答案 0 :(得分:0)
您正在以30 fps的速度写入输出,而您的网络摄像头可能无法以30 fps录制。这就是你的视频速度快的原因。找到合适的fps和输出将是正常的。
为opencv> = 3找到类似fps = cap.get(cv2.CAP_PROP_FPS)的帧速率
答案 1 :(得分:0)
我遇到了同样的问题。我认为这是由写操作引起的。您尝试将视频保存为30fps,但是write操作无法处理。例如,您要以30fps保存180帧,那么视频应为6秒。但是写操作每秒只能保存10帧,因此每秒将丢失20帧。但是视频仍以30fps的速度播放,因此6秒的视频变为2秒。似乎更快。