2015-02-26 5 views
0

У меня есть два чрезвычайно простых проекта Kinect для Windows.Распознавание рук (курсор) в Kinect Регион не работает в новом проекте

Один проект основан на оригинальной Kinect для Windows, разработки SDK образец V2 кода под названием ControlsBasics-WPF (доступен в браузере V2 SDK), а другой, который был создан с нуля с помощью нового проекта, а затем ссылки на Kinect SDK через менеджер пакетов nuget.

Код в обоих проектах соответствует следующему 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

Также обратите внимание, что я намеренно удалил ссылки DLL из образца версии SDK кода и используется nuget, чтобы ссылаться на SDK, чтобы гарантировать, что те же самые библиотеки были указаны, и это не повлияло на поведение. Код внутри двух проектов (насколько я могу сказать) идентичен, но, очевидно, я что-то упускаю.

Любой вход был бы очень оценен!

ответ

0

Все, что вам нужно сделать Kinect поддерживается WPF Программа:

1- создать новую программу WPF. 2- Добавить ссылки «Microsoft.Kinect» & «Microsoft.Kinect.Wpf.Controls». 3- Добавьте эту строку в объект Window на странице xaml. xmlns: k = "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>