如何从帧处理中解除帧读取?

时间:2016-04-17 17:20:09

标签: python multithreading python-3.x opencv

我在OpenCV的Python API中编写了一些图像分析。在read()循环内使用cv2.VideoCapture对象while True函数的网络摄像头实时获取图像。

处理帧大约需要100毫秒。我的相机能够提供30 fps。但是,如果我甚至试图将其FPS设置为15,那么我的缓慢处理将导致滞后增加。处理发生在相对于"现在"变得越来越老的帧上。如果我将FPS设置为5有点低,我只能实时运行。我假设传入帧是缓冲的,一旦我的循环返回到开始,则从该缓冲区读取下一帧而不是直接从相机读取。

我在其他地方读过,运行帧抓取和单独线程中的处理将是解决方案,但我从未使用过线程。也许我可以从缓冲区中获取最新的帧?

我正在使用Python 3.如果相关,我更喜欢OpenCV 3的答案,也会很乐意接受OpenCV 2解决方案。

0 个答案:

没有答案