我有两个非常简单的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 示例代码的版本非常坚固,并且几乎可以立即完全按预期行事(光标显示和跟踪)。基于新项目的版本表现出间歇性行为,很少有光标出现在屏幕上。
请找到以下两个解决问题的解决方案:
另请注意,我故意从SDK代码示例版本中删除了dll引用,并使用nuget引用SDK以确保引用了相同的库,这不会影响行为。两个项目中的代码(尽我所知)相同,但显然我遗漏了一些东西。
任何意见都会非常感激!
答案 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>