我从 Kinect SDK 1.7 开始,使用工具包中的 KinectRegion 和其他控件,如 KinectTileButton 和 KinectScrollViewer。我的问题是:
- 如何让 KinectRegion 左右手工作?
- SDK 1.7 是否已准备好进行缩放?
- 如何检测抓握和释放?
- 网上有什么代码吗?
谢谢!
我从 Kinect SDK 1.7 开始,使用工具包中的 KinectRegion 和其他控件,如 KinectTileButton 和 KinectScrollViewer。我的问题是:
谢谢!
要启用 Kinect 区域:
使用以下代码将 KinectRegion 添加到您的 XAML 中:
在 xaml.cs 文件中导入/使用“Microsoft.Kinect.Toolkit.Controls”:
使用 Microsoft.Kinect.Toolkit;
var regionSensorBinding = new Binding("Kinect") { Source = this.sensorChooser }; BindingOperations.SetBinding(this.kinectRegion, KinectRegion.KinectSensorProperty,
regionSensorBinding);
我不明白你所说的“缩放”是什么意思。请提供更多细节。
绝对优秀的课程在以下链接:
第一部分介绍 Kinect SDK 的基础知识
第二部分与第一部分类似,但使用了 MS Blend
第三部分是交互流教程,可以获取双手信息。
但是,如果您想在 Kinect 区域使用双手,则必须编辑 Microsoft.Kinect.Toolkit.Controls -> KinectRegion.cs -> 第 1000 行(MSDN 博客问题中的更多信息)
它对我有帮助!(我也有同样的问题)!
对于抓地力检测可在kinectRegion -> kinectRegion.HandPointers[idex of hand(0 is left, 1 is right)].IsInGripInteraction - 它是 bool - 我添加了一些代码:
private Skeleton []skeleton;
private void kinect_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
using (SkeletonFrame sf = e.OpenSkeletonFrame())
{
if (sf != null && this.skeleton != null) // check that a frame is available
{
sf.CopySkeletonDataTo(this.skeleton); // get the skeletal information in this frame
}
}
}
sensor.SkeletonFrameReady += new EventHandler<SkeletonFrameReadyEventArgs>(kinect_SkeletonFrameReady);
foreach (var sk in skeleton)
{
if (sk.TrackingId == 0) continue;
else
{
if (kinectRegion.HandPointers[0].IsInGripInteraction == true)
{
.......
}
}
}
据我所知,KinectRegion 可以用双手工作并自动检测哪一个是主要的。KinectScrollViewer 控件上的抓握和释放检测也是自动的。关于缩放我不知道。