c++ - openCV - 网络摄像头的视频捕获 - 延迟问题

标签 c++ opencv camera augmented-reality

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

相关文章:

c# - OpenCV + 安卓 + Unity

wpf - 如何理解相机的属性,如位置、视线方向、向上方向?

ios - UIImagePicker 不允许编辑图像

c++ - boost asio ssl写入部分数据

c++ - catch(...) 吞下 xcode llvm 3.0 中的所有其他捕获

c++ - Visual Studio 6.0 C++ GlobalMemoryStatusEx(需要旧 SDK)

Android:屏幕方向错误 + VM 不允许我们分配 x 字节

c++ - XOR ing C++ 时出错

python - cv2 SIFT +蛮力匹配没有给出好的结果

c++ - 使用 opencv 进行 Weiner 反卷积