我在OpenCV的Python API中编写了一些图像分析。在read()
循环内使用cv2.VideoCapture
对象while True
函数的网络摄像头实时获取图像。
处理帧大约需要100毫秒。我的相机能够提供30 fps。但是,如果我甚至试图将其FPS设置为15,那么我的缓慢处理将导致滞后增加。处理发生在相对于"现在"变得越来越老的帧上。如果我将FPS设置为5有点低,我只能实时运行。我假设传入帧是缓冲的,一旦我的循环返回到开始,则从该缓冲区读取下一帧而不是直接从相机读取。
我在其他地方读过,运行帧抓取和单独线程中的处理将是解决方案,但我从未使用过线程。也许我可以从缓冲区中获取最新的帧?
我正在使用Python 3.如果相关,我更喜欢OpenCV 3的答案,也会很乐意接受OpenCV 2解决方案。