我正在尝试使用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读)。
有人知道为什么会这样吗?有没有办法减少使用线程之外的捕获时间?我测试了线程,但后来我面对"选择超时"拍摄图像的问题。