使用 V4L2 的奇怪结果,python,在 raspberry pi 3

Weird outcomes using V4L2, python, on raspberry pi 3

奇怪的编码结果,没有多大意义。我正在尝试使用 V4L2 驱动程序从 raspberry pi 相机捕获,因为我需要使用 cv2 进行图像处理。我正在使用 python 编写代码。

奇怪之处在于使用 cv2 捕获图像。当我输入以下命令时

import cv2
from matplotlib import pyplot

camera = cv2.VideoCapture(0)
grab,frame = camera.read()
pyplot.imshow(frame)

我可以抓取一个帧并使用 matplotlib 显示它。当我抓取第二帧时

grab,frame2 = camera.read()
pyplot.imshow(frame2)

代码将抓取第二帧并完美显示。

然而,当我尝试使用像 frameframe2 这样的现有变量时,相机不会抓取新帧,而只会打印前一帧。

我试图通过键入

来清除变量
frame = []
grab,frame = camera.read()
pyplot.imshow(frame)    

但这并没有解决问题,仍在打印之前的帧。

我觉得你是"suffering from buffering"!

OpenCV读取一帧的时候,往往会聚集几帧,我觉得是5帧左右,或者可能有什么算法判断可用内存之类的.

无论如何,答案是多读取几帧以清除缓冲区,然后它会获取一些新帧。