Kinect Region内的手检测(光标)无法在新项目中工作

时间:2015-02-26 13:10:02

标签: c# wpf kinect kinect-sdk kinect.toolbox

我有两个非常简单的Kinect for Windows项目。

一个项目基于原始的Kinect for Windows开发SDK V2代码示例,标题为 ControlsBasics-WPF (可在V2 SDK浏览器中找到),另一个项目是从通过一个新项目进行刮擦,然后通过nuget包管理器引用Kinect SDK。

两个项目中的代码相当于以下XAML。

<kinectTools:KinectRegion x:Name="kinectRegion">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="2*" />
            <RowDefinition Height="8*" />
        </Grid.RowDefinitions>
        <kinectTools:KinectUserViewer Grid.Row="0" />


    </Grid>
</kinectTools:KinectRegion>

以及以下C#

public MainWindow()
{
    InitializeComponent();
    KinectRegion.SetKinectRegion(this, kinectRegion);
    this.kinectRegion.KinectSensor = KinectSensor.GetDefault();
}

如果我运行项目,预期的行为是,一旦手臂(左或右)抬起,光标应出现在定义的KinectRegion区域内的屏幕上。

然而,虽然基于 ControlsBasics-WPF 示例代码的版本非常坚固,并且几乎可以立即完全按预期行事(光标显示和跟踪)。基于新项目的版本表现出间歇性行为,很少有光标出现在屏幕上。

请找到以下两个解决问题的解决方案:

  1. Working Detection
  2. Broken Detection
  3. 另请注意,我故意从SDK代码示例版本中删除了dll引用,并使用nuget引用SDK以确保引用了相同的库,这不会影响行为。两个项目中的代码(尽我所知)相同,但显然我遗漏了一些东西。

    任何意见都会非常感激!

1 个答案:

答案 0 :(得分:0)

制作支持kinect的WPF程序所需的全部内容是:

1-创建一个新的WPF程序。 2-添加引用&#34; Microsoft.Kinect&#34; &安培; &#34; Microsoft.Kinect.Wpf.Controls&#34 ;. 3-将此行添加到xaml页面中的Window对象。 的xmlns:K =&#34; HTTP://schemas.microsoft.com/kinect/2014"

最后只需创建一个kinect区域对象,也可以在其中添加一个按钮。 类似的东西:

{

<k:KinectRegion x:Name="kinectRegion">
<Grid>
<Button Content="sdfsdfdsfsdfsdf" Background="#FF2F55A6" BorderThickness="6"  Width="150" Height="50" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Grid>
</k:KinectRegion>

}

当您运行项目时,您应该能够看到手形光标,并按下刚刚创建的按钮。 全部只有一个xaml页面。 看起来与此相同:

<Window x:Class="KinectDynamicAppLive.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:k="http://schemas.microsoft.com/kinect/2014"
        Title="MainWindow" Height="350" Width="525">
    <k:KinectRegion x:Name="kinectRegion">
    <Grid>
            <Button Content="sdfsdfdsfsdfsdf" Background="#FF2F55A6" BorderThickness="6"  Width="150" Height="50" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

        </Grid>
      </k:KinectRegion>
</Window>