如何在连接到单个PC的不同Kinect V2之间切换?

How to switch between different Kinect V2 connected to single PC?

我有两个 Kinect V2,分别连接到一台 PC 上的两个不同的 USB 3.0 端口。我知道不可能同时使用基于 SDK V2 的两者,我知道我应该使用此方法访问 Kinect V2:

_sensor = KinectSensor.GetDefault();

但是,它总是 returns 默认返回其中一个传感器,无论我连接哪个 USB 3.0 端口都没有关系。

首先,有没有什么方法可以让我们获取连接到一台 PC 的已连接 Kinect V2 的列表,并根据我们的喜好打开那台电脑? 我想在每个时间范围内使用其中一个,但需要在它们之间切换。

可以同时使用两个 Kinect。我开发了一个应用程序,它同时使用 2 个 Kinect、视频和骨架流。它是为 sdk 1.8 开发的。

因此,您可以获得所有可用的现成设备:

KinectSensor.KinectSensors.Where(kinect => kinect.Status == KinectStatus.Connected)

为什么需要在它们之间切换?您可以同时从两者激活所需的流程。在 sdk 中,它表示当两个 Kinect 指向同一个对象时它们都无法工作。但它的工作。如果你想像这样在它们之间切换:

  1. 从第一个停止流
  2. 从秒开始激活流量
  3. 转到第 1 页

这是错误的变体,因为 p. 1 和 2 大约需要第二次。很慢。

有一个解决方法,虽然很烦人,但似乎有效:

您可以enable/disable USB-port/-controller 每个 Kinect 连接到。禁用除您需要的端口之外的所有端口,KinectSensor.GetDefault(); 应该会为您提供正确的传感器。

您可以在设备管理器中手动执行此操作。但我确信还有一些方法可以在代码中自动执行此操作。

有关详细信息,请参阅 Microsoft 支持论坛上的帖子 Connection to multiple Kinect V2, NOT for synchronous acquisition