【问题标题】:openCV - videocapture of webcam - latency issueopenCV - 网络摄像头的视频捕获 - 延迟问题
【发布时间】:2014-06-05 07:27:57
【问题描述】:

所以我实际上是在制作一个增强现实项目。 我使用 openCV 从 2 个摄像头拍照。

那些相机效率不高,我认为它们的最大 fps 约为 30 fps。

如果我在程序中的每一帧刷新相机帧(通过读取方法),则应用程序的 fps 约为 25 fps。如果我不刷新它大约是 55 fps。

我认为这种延迟是因为 openCV 等待相机生成新帧,然后再进行程序的下一步。

但我至少需要以 55 fps 的速度渲染所有虚拟对象以进行沉浸感。如果 videoCapture 对象中没有帧,他们是否可以说 openCV 跳转到下一个调用?

如果没有办法,还有其他更高效的相机控制跨平台 API 吗?

谢谢!

【问题讨论】:

    标签: c++ opencv camera augmented-reality


    【解决方案1】:

    我从不在 C++ 中使用 OpenCV,但我认为这是一样的。我正在使用 OpenCV4Android,当帧进入时我需要做一些事情,如果你把你的程序放在 onCameraFrame() 函数中,它实际上会减慢 fps(我猜它就像 C++ 中的 read() 函数),因为只有当帧返回,下一帧进入。

    我的解决方案是使用另一个线程来处理框架。您可以在 read() 函数中执行的操作是设置标志以指示帧是否在 videoCapture 对象中,然后使用进程线程检查标志,如果有,则处理它。 fps会更好。

    【讨论】:

    • 好吧,我尝试将令人耳目一新的部分放在一个线程中,但它仍在减慢所有应用程序的速度:/ 这很奇怪,因为这听起来是个好主意。
    • 您可以这样尝试:首先移动“设置标志”操作是您的 onCameraFrame() 函数(OCV 为您提供),然后该函数看起来像只获取视频的纯函数,因此这个会有很好的fps。如果是,那么“设置标志”操作不会影响您的 fps,我认为这只是一行代码,例如“Isready = true”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 2019-02-19
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2015-06-25
    • 2021-06-30
    相关资源
    最近更新 更多