是的,您一定会受到USB带宽的限制。尝试以全分辨率从两个设备读取数据时,您可能会遇到错误:
libv4l2: error turning on stream: No space left on deviceVIDIOC_STREAMON: No space left on deviceTraceback (most recent call last): File "p.py", line 7, in <module> assert ret1 # fails?!AssertionError
然后,当您将分辨率降低到160x120时:
import cv2cap0 = cv2.VideoCapture(0)cap0.set(3,160)cap0.set(4,120)cap1 = cv2.VideoCapture(1)cap1.set(3,160)cap1.set(4,120)ret0, frame0 = cap0.read()assert ret0 # succeedsret1, frame1 = cap1.read()assert ret1 # fails?!
现在看来可行!我敢打赌,两个摄像头都连接在同一个USB卡上。您可以运行
lsusb命令来确保,它应该指示类似以下内容:
Bus 001 Device 006: ID 046d:081b Logitech, Inc. Webcam C310Bus 001 Device 004: ID 0409:005a NEC Corp. HighSpeed HubBus 001 Device 007: ID 046d:0990 Logitech, Inc. QuickCam Pro 9000Bus 001 Device 005: ID 0409:005a NEC Corp. HighSpeed HubBus 001 Device 003: ID 0409:005a NEC Corp. HighSpeed HubBus 001 Device 002: ID 1058:0401 Western Digital Technologies, Inc. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
(请注意两个摄像机都在同一总线上。)如果可能,您可以在机器上添加另一个USB卡以获取更多带宽。我之前已经这样做过,以便在一台机器上以全分辨率运行多个凸轮。尽管那是带有可用主板插槽的塔式工作站,但是不幸的是,您可能没有在MacBook笔记本电脑上使用该选项。



