2016-10-02 3 views
0

Я пытаюсь получить пары изображений из стереофонической веб-камеры Minoru, в настоящее время через opencv на linux. Он отлично работает, когда я заставляю низкое разрешение:Ограничения захвата стереофонических камер Opencv

left = cv2.VideoCapture(0) 
left.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 320) 
left.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 240) 
right = cv2.VideoCapture(0) 
right.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 320) 
right.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 240) 

while True: 
    _, left_img = left.read() 
    _, right_img = right.read() 
    ... 

Однако я использую изображения для создания карт глубины, и больше разрешения было бы хорошо. Но если я пытаюсь оставить по умолчанию, или принуждая разрешение 640х480, я ударяя ошибки:

libv4l2: ошибка поворотом на поток: не осталось на устройстве пространства

Я прочитал о USB полосой пропускания ограничения, но:

  • это происходит на первой итерации (первый читать() справа)
  • мне не нужно где-нибудь около 60 или даже 30 кадров в секунду, но не может управлять, чтобы уменьшить «запрошенный FPS» через параметр VideoCapture (если это имеет смысл)
  • добавление спит, похоже, не помогает, даже между левым/правым читает
  • странно, если я много обрабатываю (в цикле while), я начинаю замечать «лаг»: вещи происходящее в реальном мире проявляется намного позже на прочитанных изображениях. Это говорит о том, что на самом деле есть буфер где-то, что может и действительно накапливает несколько изображений (много)

Я попробовал обходной путь создания и освобождение отдельного видеозахвата для каждого чтения изображения, но это немного слишком медленно в целом (< 1FPS), и, что более важно, изображение слишком сильно не синхронизировано для работы в стереофоническом сопоставлении.

Я пытаюсь понять, почему это не удается, чтобы найти решения. Похоже, v4l выделяет один глобальный слишком маленький буфер, который используется 2 объектами захвата. Любая помощь будет оценена по достоинству.

ответ

0

У меня была такая же проблема, и нашел этот ответ - https://superuser.com/questions/431759/using-multiple-usb-webcams-in-linux

Поскольку оба Minoru камеры показывают формат как «YUYV», это, скорее всего, проблема пропускной способности USB. Я опустил кадры в секунду до 20 (не работал на 24), и я вижу оба изображения 640x480.

Смежные вопросы