OpenCV VideoCapture缓冲区和读取时间

时间:2016-07-12 07:03:01

标签: opencv buffer

我正在尝试使用VideoCapture在Python中使用cap.read()从USB相机8Mp读取图像。时间非常重要。

openCV中有一个5帧的内部缓冲区,所以当请求图像时,我必须制作4 cap.grab()然后一个cap.read()以将时间缩短到最小值。

在文件 cap_libv4l.cpp 中,有一个变量DEFAULT_V4L_BUFFERS (#define DEFAULT_V4L_BUFFERS 4)

我更改了它并重新编译了OpenCV。

#define DEFAULT_V4L_BUFFERS 0是不允许的,它会出错。

如果我将其更改为#define DEFAULT_V4L_BUFFERS 1,我只需要制作一个cap.grab()和一个cap.read(),但时间不会缩短。

当你减少DEFAULT_V4L_BUFFERS的值,然后cap.read()的时间增加,在两种情况下都是相同的总时间:缓冲区大小4(4个抓取和1个读取)和缓冲区大小1(1个抓取和1读)。

有人知道为什么会这样吗?有没有办法减少使用线程之外的捕获时间?我测试了线程,但后来我面对"选择超时"拍摄图像的问题。

0 个答案:

没有答案