当前位置:  开发笔记 > 编程语言 > 正文

cv2.VideoCapture.read()在time.sleep()之后变旧

如何解决《cv2.VideoCapture.read()在time.sleep()之后变旧》经验,为你挑选了1个好方法。

我尝试使用Python opencv和两个摄像头捕获(立体声)图像,因此应每5秒保存一次图像。但是这里的问题是保存了旧框架。

缩小的代码如下:

    cap = cv2.VideoCapture(0)

    for i in range(20):
        time.sleep(5)
        print "Taking image %d:" % i
        ret, frame = cap.read()
        cv2.imwrite("image %d" % i, frame)
        print "  image done." if ret else "  Error while taking image..."
    cap.release()
    cv2.destroyAllWindows()

为了检查这一点,我在每次拍摄图像后都更改了相机的位置。但是尽管如此,还是保存了旧位置的图像(实际上是不一样的,但我假设最后保存的图像之后有几帧)。在5张(或更多)图像之后,最终在图像中捕获的位置也确实发生了变化。

那么,有什么问题time.sleep吗?我想我没有得到实际的帧,而是缓冲的帧。如果是这种情况,我该如何解决它并捕获实际帧?



1> 小智..:

VideoCapture正在缓冲。如果您始终需要实际的框架,请执行以下操作:

while True:
    cap = cv2.VideoCapture(0)
    ret, frame = cap.read()
    cap.release()
    cv2.imshow(" ", frame)
    if cv2.waitKey(2000) != -1:
        break

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有