我试图使用cv2.VideoCapture()
每3秒从相机获取一帧,所以我使用time.sleep()
暂停执行,代码在这里:
import cv2
import time
cnt = 0
cap = cv2.VideoCapture(0)
while (True):
time.sleep(3)
ret, frame = cap.read()
cv2.imwrite('{}.png'.format(cnt),frame)
cnt+=1
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
我在相机的前面放置了一个秒表,每3秒保存一帧,但是我发现在第一帧之后还有另外四帧被错误地保存,因此保存的图像时间为:1.0、1.1、1.1, 1.2、1.3、2、3、4、5、6等。那么到底是怎么回事?
答案 0 :(得分:2)
问题似乎是当您调用read()
时,opencv正在缓冲多个帧。从其他几个问题(Get most recent frame from webcam,http://answers.opencv.org/question/29957/highguivideocapture-buffer-introducing-lag/)来看,好像有5张图片已被缓冲,因此您可能需要grab()
剩下的4张图片才能继续。