所以我实际上是在制作增强现实项目。
我使用openCV从2台相机拍摄照片。
那些相机的效率真的很高,我认为它们的最大fps约为30 fps。
如果我在读取程序中每帧刷新相机帧(通过读取方法),则应用程序的fps约为25 fps。如果我不刷新,则约为55 fps。
我认为这种延迟是因为openCV 在进入程序的下一步之前,等待摄像机生成新帧。
但是我至少需要以55 fps的速度渲染所有虚拟对象,以实现完美呈现。如果 videoCapture 对象中没有帧,他们是否可以说openCV跳到下一个调用?
如果没有办法,还有其他跨平台API可以使摄像机控制更有效?
谢谢!
最佳答案
我从不在C++中使用OpenCV,但我认为这是相同的。我使用的是OpenCV4Android,当帧进入时我需要做一些事情,如果将过程放在onCameraFrame()函数中(我想它像C++中的read()函数),它将确实降低fps的速度,因为仅当帧返回,下一帧进入。
我的解决方案是使用另一个线程来处理框架。在read()函数中可以执行的操作是设置标志以指示帧是否在videoCapture对象中,然后使用进程线程检查该标志(如果存在),对其进行处理。 fps会更好。
关于c++ - openCV-网络摄像头的视频捕获-延迟问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23193896/