如何使用Microsoft Kinect for Windows SDK ver 1.7 C#检测打开/
发布时间:2020-12-14 05:44:02 所属栏目:Windows 来源:网络整理
导读:我最近开始使用Microsoft Kinect for Windows SDK使用Kinect设备编程一些东西. 我正在破坏我的屁股以找到一种方法来检测某只手是否被关闭或打开. 我看到了Kinect for Windows Toolkit,但文档不存在,我找不到让它工作的方法. 有谁知道一种简单的方法来检测手
我最近开始使用Microsoft Kinect for
Windows SDK使用Kinect设备编程一些东西.
我正在破坏我的屁股以找到一种方法来检测某只手是否被关闭或打开. 我看到了Kinect for Windows Toolkit,但文档不存在,我找不到让它工作的方法. 有谁知道一种简单的方法来检测手的情况?如果它不涉及使用Kinect工具包的需要,那就更好了. 解决方法
这就是我最终做到的方式:
首先,我们需要一个看起来像这样的虚拟类: public class DummyInteractionClient : IInteractionClient { public InteractionInfo GetInteractionInfoAtLocation( int skeletonTrackingId,InteractionHandType handType,double x,double y) { var result = new InteractionInfo(); result.IsGripTarget = true; result.IsPressTarget = true; result.PressAttractionPointX = 0.5; result.PressAttractionPointY = 0.5; result.PressTargetControlId = 1; return result; } } 然后,在主应用程序代码中,我们需要宣布关于交互事件处理程序,如下所示: this.interactionStream = new InteractionStream(args.NewSensor,new DummyInteractionClient()); this.interactionStream.InteractionFrameReady += InteractionStreamOnInteractionFrameReady; 最后,处理程序本身的代码: private void InteractionStreamOnInteractionFrameReady(object sender,InteractionFrameReadyEventArgs e) { using (InteractionFrame frame = e.OpenInteractionFrame()) { if (frame != null) { if (this.userInfos == null) { this.userInfos = new UserInfo[InteractionFrame.UserInfoArrayLength]; } frame.CopyInteractionDataTo(this.userInfos); } else { return; } } foreach (UserInfo userInfo in this.userInfos) { foreach (InteractionHandPointer handPointer in userInfo.HandPointers) { string action = null; switch (handPointer.HandEventType) { case InteractionHandEventType.Grip: action = "gripped"; break; case InteractionHandEventType.GripRelease: action = "released"; break; } if (action != null) { string handSide = "unknown"; switch (handPointer.HandType) { case InteractionHandType.Left: handSide = "left"; break; case InteractionHandType.Right: handSide = "right"; break; } if (handSide == "left") { if (action == "released") { // left hand released code here } else { // left hand gripped code here } } else { if (action == "released") { // right hand released code here } else { // right hand gripped code here } } } } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows – 进程ID和进程句柄之间的区别是什么
- 在Tkinter中的Toplevel:阻止两个Windows打开
- windows-runtime – 如何确定GridView中哪些项目在当前滚动
- MDT部署:为什么禁用更改Windows更新设置等
- 如何在窗口外单击鼠标关闭Vaadin子窗口?
- windows – 获取每线程CPU统计信息
- Microsoft Media Foundation官方文档翻译(9、10)《Media
- Windows – TortoiseSVN使用SSH
- 小型Windows XP计算机的备份策略
- windows-server-2008 – Windows远程访问服务器(PPTP)通告的
推荐文章
站长推荐
热点阅读