所以我实际上是在制作增强现实项目。
我使用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/

10-13 07:37