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