Python openCV视频录制不实时



尝试录制"时间真实";带有openCV的视频。录制视频片段时,速度似乎略有加快。如果我把计时器举到网络摄像头上,然后播放它,保存的视频每分钟快3-5秒。

如果我从网络摄像头录制1分钟,如何将保存的视频精确设置为1分钟?还是录制2分钟,以导出2分钟的视频?

import cv2

cap = cv2.VideoCapture(0)
fps = cap.get(cv2.CAP_PROP_FPS)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
width  = cap.get(cv2.CAP_PROP_FRAME_WIDTH)   # float `width`
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)  # float `height`
fourcc = cv2.VideoWriter_fourcc(*'XVID')
videoWriter = cv2.VideoWriter('MYPATH\video.avi', fourcc, fps, (int(width),int(height)))

while (True):
ret, frame = cap.read()
if ret:
cv2.imshow('video', frame)
videoWriter.write(frame)

if cv2.waitKey(1) == 27:
break

cap.release()
videoWriter.release()
cv2.destroyAllWindows()

我不知道为什么要修复它……但将forcc更改为fourcc=cv2.VideoWriter_fourcc(*'MP4V'(,然后将输出文件从.avi更改为.mp4解决了这个问题。

您的程序可能会因为while循环中第16行的True语句而写入额外的帧,然后通过以下方式更改该值以检查为条件ret

...
ret, frame = cap.read()
while (ret):    
cv2.imshow('video', frame)
videoWriter.write(frame)

ret, frame = cap.read()
if cv2.waitKey(1) == 27:
break
cap.release()
videoWriter.release()
cv2.destroyAllWindows()    

最新更新