我使用 V4L2 从网络摄像头获取帧,但我发现即使
timeperframe
等于 1/30
,调用 ioctl(fd, VIDIOC_DQBUF, &buffer)
也需要约 60 毫秒,这太慢了! 30 帧 * 60ms = 1800ms,差不多 2 秒拍摄 30 帧,这就是 ~15fps!
此外,我发现如果将分辨率降低一半(640x480 -> 320x240),VIDIOC_DQBUF 调用的持续时间也会减少一半。
我可以用这个做点什么还是这是我的硬件的限制?也许在打开流之前我应该设置一些东西?
我使用 Logitech C270 网络摄像头,C 语言源代码位于 here,如果您想查看它。
“camera.init_buffers(2);”在这里尝试更大的缓冲区大小。