将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 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;
}
}
总的来说,我在启动时使用的模式是:
- 订阅状态改变事件
- 尝试初始化Kinect传感器
当Kinect传感器的状态发生变化时,我的应用程序可以做出相应的反应。
注意,这种类型的模式应该适用于所有的应用程序,而不仅仅是这个特定的用例。当Kinect传感器断开连接时,所有支持Kinect的应用都应该做出适当的反应。