![使用多个 USB 网络摄像头的影响](https://linux22.com/image/1234625/%E4%BD%BF%E7%94%A8%E5%A4%9A%E4%B8%AA%20USB%20%E7%BD%91%E7%BB%9C%E6%91%84%E5%83%8F%E5%A4%B4%E7%9A%84%E5%BD%B1%E5%93%8D.png)
我正在研究将多个低分辨率 USB 网络摄像头连接到一台计算机。这会对性能产生什么影响?例如,四个 320x240 摄像头与一个 640x480 摄像头相比如何?我不太熟悉 USB 接口的架构,性能注意事项是什么?我所说的性能是指与单个摄像头相比,它会如何影响从多个摄像头读取图像数据的时间。
答案1
您应该记住的一件事是,虽然 QVGA 需要的带宽很少,但许多廉价网络摄像头即使声称它们是“USB 2.0”设备也只能以“全速”(12Mbit/s)运行(只有 USB 2.0“高速”设备才能以 480Mbit/s 的速度运行)。
不仅如此,如果您将多个“全速”设备插入标准单 TT USB 集线器(大多数都是这样),那么所有 4 个设备都必须共享单个“全速”链路的 12Mbit/s。
这就是为什么,如果你想要尽可能快地运行多个“全速”设备,一定要购买多 TT 集线器。最容易找到的是 Belkin Tetra-hub,但你可能必须从网上购买,你当地的电脑商店不太可能有存货。
但是,4 端口多 TT 集线器应该能够为每个摄像头运行 4 个 12Mbit/s 的“全速”设备。
Tom's Hardware Guide 上有一篇很好的文章多TT早在 2003 年。
还请注意,如果您获得真正的高速 USB 2.0 网络摄像头,则不会遇到此问题。如果随附的软件支持,480Mbit/s 应该足以满足大量 QVGA 摄像头同时进行流式传输的需求。
编辑:如果这是用于机器视觉应用程序,则接口的选择可以由您使用的图像库来指导。就个人而言,对于家庭应用程序,USB 很好,对于工业用途,我总是选择 Firewire 而不是 USB。它具有更细粒度的带宽控制,您可以通过定义分辨率和帧速率来准确决定哪些摄像机获得什么带宽。Firewire DCAM 协议为您提供了对传感器进行窗口化的极大灵活性(选择要传输的图像子集,可能为您提供给定带宽的更高帧速率)。显然,如果您不需要额外的灵活性,那么额外的费用是没有必要的,但如果您的预算要求不严格,它会为您提供更多的工程选择。
答案2
一般来说,规模经济意味着一台高分辨率相机对系统的影响小于 4 台分辨率只有其四分之一的小型相机。测量性能的最简单方法是查看连接了一两台相机的任务管理器,并查看该相机的 CPU 负载。确保它不超过百分之几,否则您可能会开始看到速度变慢。我建议您使用相同的相机来减少需要加载的设备驱动程序数量。
不过,可能还有比使用 4 个 USB 摄像头更好的方法来解决您的问题(具体取决于您要做什么)。例如,您可以购买专用的 PCI 卡,它可以连接 4-16 个摄像头,所有繁重的工作都在硬件中完成。这意味着 CPU 负载可以忽略不计。大多数摄像头都采用普通的复合输入,这使得摄像头便宜得多。您可能可以购买 4 个摄像头加上卡,价格与从 eBay 购买几个不错的网络摄像头相同 - 包括安全软件。