我使用3个摄像头偶尔在OpenCV中拍摄快照。它们连接到同一个usb总线上,由于usb带宽限制,这不允许所有3个连接同时进行(降低分辨率最多允许2个同时连接,我没有更多的usb总线)。在
正因为如此,每当我想拍快照时,我都要切换摄像头连接,但这会导致大约40次切换后内存泄漏。在
这是我得到的错误:libv4l2: error allocating conversion buffer
mmap: Cannot allocate memory
munmap: Invalid argument
munmap: Invalid argument
munmap: Invalid argument
munmap: Invalid argument
Unable to stop the stream.: Bad file descriptor
munmap: Invalid argument
munmap: Invalid argument
munmap: Invalid argument
munmap: Invalid argument
libv4l1: error allocating v4l1 buffer: Cannot allocate memory
HIGHGUI ERROR: V4L: Mapping Memmory from video source error: Invalid argument
HIGHGUI ERROR: V4L: Initial Capture Error: Unable to load initial memory buffers.
OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or
unsupported array type) in cvGetMat, file
/build/buildd/opencv-2.3.1/modules/core/src/array.cpp, line 2482
Traceback (most recent call last):
File "/home/irobot/project/test.py", line 7, in
cv2.imshow('cam', img)
cv2.error: /build/buildd/opencv-2.3.1/modules/core/src/array.cpp:2482:
error: (-206) Unrecognized or unsupported array type in function cvGetMat
这是一段生成此错误的简单代码:
^{pr2}$
也许值得注意的是,我每次连接相机时都会遇到VIDIOC_QUERYMENU: Invalid argument错误,尽管我可以继续使用它。在
作为一些额外的信息,这是我的v4l2-ctl -V输出的网络摄像头:~$ v4l2-ctl -V
Format Video Capture:
Width/Height : 640/480
Pixel Format : 'YUYV'
Field : None
Bytes per Line: 1280
Size Image : 614400
Colorspace : SRGB
是什么导致了这些错误?我如何修复它们?在