我已经在Python中集成了一台带OpenCV的IP摄像头,以便从实时流中逐帧完成视频处理.我已经将相机FPS配置为1秒,这样我就可以在缓冲区中每秒获得1帧处理,但是我的算法需要4秒来处理每个帧,导致缓冲区中未处理帧的停滞,并且会随着时间的推移而不断增长导致指数延迟.为了解决这个问题,我创建了一个Thread,我在调用cv2.grab()API来清理缓冲区,它将指针移动到每个调用中的最新帧.在主线程中,我正在调用retrieve()方法,它给出了第一个Thread抓取的最后一帧.通过这种设计,帧停滞问题是固定的,并且指数延迟被消除,但仍然不能消除12-13秒的恒定延迟.我怀疑当cv2.retrieve()被调用时它没有获得最新的帧,而是来自最新帧的第4或第5帧.OpenCV中是否有任何API或任何其他设计模式来解决此问题,以便我可以获得最新的帧进行处理.
在此先感谢您的帮助.我真的很感激快速反应.