Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 微软Kinect&x2B;Telldus指示器_C#_Automation_Kinect - Fatal编程技术网

C# 微软Kinect&x2B;Telldus指示器

C# 微软Kinect&x2B;Telldus指示器,c#,automation,kinect,C#,Automation,Kinect,我希望有人能帮我指出正确的方向 我正在寻找一种使用Microsoft Kinect关闭指示灯的方法。该灯连接至一个家用简易遥控插座开关,该开关与Telldus指示杆配对。 我正在使用C#来编写应用程序,现在我对我想做什么有一个模糊的想法,在使用Kinect SDK之后,我对如何使用Kinect有了更好的理解 我想知道的是,创建此应用程序最合理的方式是什么?我的想法大致如下: 初始化Kinect>当Kinect就绪时,然后扫描骨架>当检测到骨架时,将布尔值标记为“真”>当值为真时,打开指示灯 我知

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

我正在寻找一种使用Microsoft Kinect关闭指示灯的方法。该灯连接至一个家用简易遥控插座开关,该开关与Telldus指示杆配对。 我正在使用C#来编写应用程序,现在我对我想做什么有一个模糊的想法,在使用Kinect SDK之后,我对如何使用Kinect有了更好的理解

我想知道的是,创建此应用程序最合理的方式是什么?我的想法大致如下:
初始化Kinect>当Kinect就绪时,然后扫描骨架>当检测到骨架时,将布尔值标记为“真”>当值为真时,打开指示灯

我知道这一点很模糊,但我对kinect的开发还不熟悉,而且我的整个系统还在学习C#。任何帮助,无论多么小,都将不胜感激

问候,,
John。

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

步骤:

  • 初始化Kinect(我将使用此应用程序WPFViewers附带的KinectSensorChooser)启用并注册骨架流
  • 在骨架事件检查中,确保未获得空骨架集合(发生这种情况)
  • 使用LINQ获取其“跟踪”属性设置为“跟踪”的第一个骨架。您也可以使用for循环,我发现LINQ对于这些类型的迭代非常有用
  • 如果LINQ查询后的骨架不是null,请执行某些操作
  • 如果您想快速了解这一点,并且具有一定的天赋,您可以利用下载SDK Kinect Explorer时附带的示例。有一个骨架查看器和KinectSensorChooser,可以让你用很少的代码就能拥有一个功能齐全的应用程序。 阅读有关此示例附带的骨骼查看器的更多信息


    我对wether是否提供这方面的代码有点犹豫。我认为最好用执行操作所需的逻辑来回答这个问题,而不是用实际的代码。。。既然你问了:)但是,如果你想要这个代码,你可以从第四章或第四章得到它


    编辑(扩展KinectExplorer):

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


    初始化Kinect>当Kinect准备就绪,然后扫描骨架>当检测到骨架时,将布尔值标记为“true”,这是更符合逻辑的方法感谢Mekici,我很想知道我是否需要从骨骼跟踪中收集任何数据,或者我是否可以在没有任何进一步问题的情况下指定布尔命令?事实上,骨骼跟踪没有必要!为什么必须使用骨架处理?你的方法可以是简单的图像处理,也就是运动检测?我希望能够在应用程序运行时显示实时骨骼数据,只是为了增强GUI。我不知道SDK中是否存在这种情况,但在测试版中,每当我使用bool来判断是否检测到某人时,一切都冻结了。我想他们已经解决了(我希望)嗨,大卫,谢谢你的回复。顺便说一句,我打算在年初买你的书!但对我来说,上市日期有点晚了。我已经到了使用WPF浏览器的颜色流,它是注册的骨架方案。不过,我不理解Skeleton SDK示例,因为我对C#的了解仍然非常有限。快速入门指南很有帮助,但并没有真正针对我想要做的事情。您是否可以提供一些代码来为我指明正确的方向?它不必是彻底的…谢谢J.Doe,我的书被推迟了,因为V1发布时API中有大量的变化。我想确保任何拿起它的人都可以使用最新版本。。。我对我的答案进行了编辑,为您提供了在KinectExplorer中查找注入代码的位置的指针。我希望这会有帮助。而且
    int
    s似乎也能工作,例如
    intpersondetected=0;骨骼;如果(skeleton.TrackingState==SkeletonTrackingState.Tracked){PersonDetected=1;}
    我尝试了你的建议,取缔了Lemur,但我一直收到错误消息“使用未分配的局部变量”,我似乎无法理解它的含义@J.Doe这是因为
    框架
    尚未定义。。。。看见
    
       private void KinectAllFramesReady(object sender, AllFramesReadyEventArgs e)
       {
        //Checking for Skeleton
        if (haveSkeletonData)
        {
         //Do Stuff Here
        }
       }