OpenCV에서 스냅 샷을 찍기 위해 3 개의 웹캠을 사용하고 있습니다. 그것들은 같은 USB 버스에 연결되어 있는데, 이는 USB 대역폭 제한으로 인해 동시에 3 개의 모든 연결을 허용하지 않습니다 (해상도를 낮추면 최대 2 개의 동시 연결이 가능하며 더 많은 USB 버스를 가질 수는 없습니다).Python OpenCV에서 VideoCapture를 사용한 메모리 누수
이 때문에 스냅 샷을 찍을 때마다 웹캠 연결을 전환해야하지만 40 개가 넘으면 메모리 누수가 발생합니다. 내가 VIDIOC_QUERYMENU: Invalid argument
오류마다를 얻을
import cv2
for i in range(0,100):
print i
cam = cv2.VideoCapture(0)
success, img = cam.read()
cv2.imshow('cam', img)
del(cam)
if cv2.waitKey(5) > -1:
break
cv2.destroyAllWindows()
어쩌면 가치있는 참고 인 :
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 <module>
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
이이 오류를 생성하는 코드의 간단한 조각이다 :
이
은 내가 오류입니다 카메라는 연결되지만 여전히 사용할 수 있습니다.~$ v4l2-ctl -V
Format Video Capture:
Width/Height : 640/480
Pixel Format : 'YUYV'
Field : None
Bytes per Line: 1280
Size Image : 614400
Colorspace : SRGB
무엇 이러한 오류의 원인이며 어떻게 해결할 수 : 몇 가지 추가 정보를 원하시면,이 웹캠의 내 v4l2-ctl -V
출력은
입니까?
를? – bakalolo
사용중인 OpenCV 버전은 무엇입니까? 오래 동안이지만 OpenCV를 업데이트 한 후에 문제가 발생하지 않는다고 생각합니다 (2.3.1 버전이라고 생각합니다). – RemiX
2.4.12를 사용하고 있습니다. 시도해보고 3으로 업데이트 할 수 있습니다. – bakalolo