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++ - typedef void (*print_type) (const char*);

c++ - 什么时候使用HeapCreate函数或者什么情况下需要堆的数量?

java - OpenCV - 如何在 Android 中设置全屏相机 View ?

c++ - 使用相机进行 3D 建模

c++ - 如何使用 GLFW 预编译二进制文件编译 Visual Studio 2019 发布版本

c++ - istream 在 while-switch 循环中崩溃

opencv - 根据颜色选择 'Region of Interest'并确定对象的形状

python - 在OpenCV的HoughCircles方法中确定参数

python - 如何从图像中去除外部空心轮廓而不影响内部轮廓

python-3.x - 如何关闭 Raspberry Pi Cam 的 AWB/AGE(Raspi 4、RaspiCam V2.1、Python、OpenCV)