Microsoft Kinect + Telldus Tellstick

本文关键字:Tellstick Telldus Kinect Microsoft | 更新日期: 2023-09-27 18:30:10

我希望有人能帮我指明正确的方向。

我正在寻找一种使用微软Kinect关灯的方法。该灯连接到Home Easy远程插座开关,该开关与Telldus Tellstick配对。我正在使用C#编写应用程序,现在我脑子里有一个模糊的想法,我想做什么,使用Kinect SDK后,我对如何使用Kinect有了更好的理解。

我想知道的是,创建这个应用程序的最合乎逻辑的方法是什么?我想的是:初始化Kinect>当Kinect准备就绪时,扫描骨骼>当检测到骨骼时,将布尔值标记为"true">当值为true时,打开灯。

我知道这是非常模糊的,但我是新开发的动力学和总的来说,我仍然在学习C#。任何帮助,无论多么微小,都将不胜感激!

谨致问候,约翰。

Microsoft Kinect + Telldus Tellstick

您不能为此设置简单的布尔值,因为SDK的事件驱动方法将返回6个骨架结构,即使它们都是空的。不过,使用一点LINQ和一个null检查会得到你想要的东西。

步骤:

  1. 初始化Kinect(我会为这个应用程序WPFViewers使用附带的KinectSensorChooser)启用并注册骨骼流
  2. 在骨架事件中,检查以确保没有获得空骨架集合(发生这种情况)
  3. 使用LINQ获取将其跟踪属性设置为跟踪的第一个骨架。您也可以只使用for循环,我只是发现LINQ对这些类型的迭代很有用
  4. 如果LINQ查询后的骨架不为null,请执行某些操作

如果你想快速且有天赋地完成这项工作,你可以使用下载SDK Kinect Explorer时附带的示例。有一个骨架查看器和KinectSensorChooser,可以让你拥有一个功能齐全的应用程序,只需很少的代码。阅读更多关于此示例中包含的骨骼查看器


我有点不确定是否要为此提供代码。我认为最好用执行操作所需的逻辑来回答这个问题,而不是实际的代码。。。既然你问了:)然而,如果你想要这个的代码,你可以从Channel 9的Quickstarts或我的书第四章中获得


编辑(扩展KinectExplorer):

为了扩展KinectExplorer以在检测到骨架时做出响应,只需在KinectSkeletonViewer.xaml.cs中找到函数KinectAllFramesReady。该函数内部有一个对haveSkeletonData的布尔检查,当Kinect的可视帧中存在骨架时,将调用此if语句。所以:

   private void KinectAllFramesReady(object sender, AllFramesReadyEventArgs e)
   {
    //Checking for Skeleton
    if (haveSkeletonData)
    {
     //Do Stuff Here
    }
   }