所以我实际上正在制作一个增强现实的项目。 我使用openCV从2台相机拍照。
那些相机并不高效,我认为它们的最大光圈大约是30 fps。
如果我在每帧的程序中刷新相机帧(通过读取方法),则应用程序的fps约为25 fps。如果我不刷新它大概是55 fps。
我认为这种延迟是因为在进入程序的下一步之前,摄像机会生成openCV 等待新帧。
但我需要至少所有虚拟对象以55 fps的速度呈现给imersion。如果 videoCapture 对象中没有框架,他们是否可以说openCV跳转到下一个电话?
如果没有其他跨平台API可以提高相机控制的效率吗?
THX!
答案 0 :(得分:1)
我从不在C ++中使用OpenCV,但我认为这是相同的。我正在使用OpenCV4Android,当框架进来时我需要做一些事情,如果你把你的程序放在onCameraFrame()函数中(我猜它就像C ++中的read()函数),它会慢慢fps,因为只有当帧返回,下一帧即将进入。
我的解决方案是使用另一个线程来处理帧。你在read()函数中可以做的是设置标志以指示帧是否在videoCapture对象中,然后使用进程线程检查标志,如果有,则处理它。 fps会更好。