将Kinect应用连接到Kinect Studio

本文关键字:Kinect Studio 应用 连接 | 更新日期: 2023-09-27 17:49:35

我正在使用Kinect SDK版本1.6构建Kinect应用程序。我想用Kinect Studio录制一个。xed文件,然后使用这个。xed文件来测试我的应用程序,而不必每次都连接Kinect传感器。

我已经成功地记录了。xed文件,我现在正试图使用。xed文件作为输入而不是传感器来运行我的应用程序。问题是,当我的应用程序第一次加载,它检查连接的传感器和连接到一个,如果它存在-如果一个不存在,它不能连接,必须退出。但是,我的应用必须在Kinect Studio加载时运行,才能让Studio连接到正在运行的Kinect应用。所以我的问题是——设计模式是什么?

应用程序是否应该开始运行并等待有源传感器,然后连接?或者Studio应该运行并等待Kinect应用程序启动,然后将自己连接到应用程序?微软给出的所有例子都只是检查一次连接的设备,如果不存在则退出。

将Kinect应用连接到Kinect Studio

当Kinect Sensor状态发生变化时,你可以添加一个事件处理器:

KinectSensor.KinectSensors.StatusChanged += Kinect_StatusChanged;

然后,当状态改变并且传感器连接时,您可以初始化传感器,就像您在启动时通常做的那样:

void Kinect_StatusChanged(object sender, StatusChangedEventArgs e)
{
    switch (e.Status)
    {
        case KinectStatus.Connected:
            if (kinectSensor == null)
            {
                kinectSensor = e.Sensor;
                Initialize();
            }
            break;
        case KinectStatus.Disconnected:
            if (kinectSensor == e.Sensor)
            {
                Clean();
                // Notify user, change state of APP appropriately
            }
            break;
        case KinectStatus.NotReady:
            break;
        case KinectStatus.NotPowered:
            if (kinectSensor == e.Sensor)
            {
                Clean();
                // Notify user, change state of APP appropriately
            }
            break;
        default:
            // Throw exception, notify user or ignore depending on use case
            break;
    }
}

总的来说,我在启动时使用的模式是:
  1. 订阅状态改变事件
  2. 尝试初始化Kinect传感器

当Kinect传感器的状态发生变化时,我的应用程序可以做出相应的反应。

注意,这种类型的模式应该适用于所有的应用程序,而不仅仅是这个特定的用例。当Kinect传感器断开连接时,所有支持Kinect的应用都应该做出适当的反应。