Две веб-камеры на одном концентраторе USB 2.0 - работает в Windows, но не Linux
Приведенный ниже код openCV позволяет одновременно получать изображения с двух камер. Он отлично работает в Windows, с камерами, подключенными к одному концентратору USB 2.0. Когда я пытаюсь использовать тот же код в Linux, он имеет достаточную пропускную способность для одной камеры одновременно. Я также попытался просмотреть два потока одновременно с помощью guvcview, та же проблема. Мне нужен какой-то способ заставить веб-камеры работать вместе, возможно, путем установки пропускной способности, которую запрашивает драйвер.
capture = cv.CaptureFromCAM(0)
capture2 = cv.CaptureFromCAM(1)
while True:
frame = cv.QueryFrame(capture)
frame2 = cv.QueryFrame(capture2)
cv.ShowImage("w1", frame)
cv.ShowImage("w2", frame2)
if cv.WaitKey(10) != -1:
break
3 ответа
У меня была проблема пропускной способности USB с веб-камерами (LifeCam Cinema), и я решил ее, используя причуду FIX_BANDWIDTH драйвера uvcvideo. Посмотрите этот ответ для деталей об использовании причуды.
Без излишеств, для некоторых хост-контроллеров USB, которые я пробовал, работали две LifeCam (на контроллер); для других только один. Вот контроллеры в одной из машин моего машинного зрения:
uli@KL04:~$ lspci | grep USB
00:1a.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #2 (rev 06)
00:1d.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #1 (rev 06)
03:00.0 USB controller: VIA Technologies, Inc. Device 3483 (rev 01)
0a:00.0 USB controller: ASMedia Technology Inc. Device 1142
0b:00.0 USB controller: ASMedia Technology Inc. Device 1142
(Контроллеры Intel и ASMedia находятся на материнской плате, VIA на плате PCIe.) Без всяких изысков каждый контроллер ASMedia поддерживал только одну LifeCam.
Проблема может заключаться в том, что камеры выполняют своего рода сжатие видео в своих драйверах Windows, в то время как они могут работать без сжатия в Linux - с более высокой скоростью передачи данных.
Если это так, то вам может потребоваться установить их на разные шины USB, чтобы они работали одновременно в Linux. Для этого может потребоваться добавить в систему карту USB или PCIe USB - многие материнские платы поддерживают только одну высокоскоростную шину USB2.0.
Можете ли вы настроить веб-камеры для использования более низкого разрешения или частоты кадров и, следовательно, меньшей пропускной способности?