//注意:1.安装Kinect SDK 1.0以上, // 2.引用Microsoft.Kinect.dll库 private Graphics g;//界面画布对象 private KinectSensor kinect = null;//指向Kinect对象 private Skeleton[] skeletonData; //存储从Kinect传感器接收到的数据对象 private void StartKinectST() { // Get first Kinect Sensor kinect = KinectSensor.KinectSensors.FirstOrDefault(s => s.Status == KinectStatus.Connected); //注意:此判断MS目前无效 if (null == kinect) { this.ShowDialog(); } this.Text = "正在检测Kinect传感器..."; // 允许骨骼跟踪 kinect.SkeletonStream.Enable(); //关闭颜色和景深数据的接收 kinect.ColorStream.Disable(); kinect.DepthStream.Disable(); skeletonData = new Skeleton[kinect.SkeletonStream.FrameSkeletonArrayLength]; // Get Ready for Skeleton Ready Events kinect.SkeletonFrameReady += new EventHandler<SkeletonFrameReadyEventArgs>(kinect_SkeletonFrameReady); // Start Kinect sensor kinect.Start(); } //接收到数据的处理事件 private void kinect_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { try { ////Tracked that defines whether a skeleton is 'tracked' or not. ////The untracked skeletons only give their position. //if (SkeletonTrackingState.Tracked != data.TrackingState) continue; this.Text = "Kinect传感器连结成功!"; using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame()) // Open the Skeleton frame { // check that a frame is available if (skeletonFrame != null && this.skeletonData != null) { // get the skeletal information in this frame skeletonFrame.CopySkeletonDataTo(this.skeletonData); } } foreach (Skeleton skeleton in this.skeletonData) { if (null != skeleton) { if (skeleton.TrackingState == SkeletonTrackingState.Tracked) { Console.WriteLine("KinectID: " + skeleton.TrackingId); //只处理跟踪移动的数据 DrawTrackedSkeletonJoints(skeleton.Joints); } else if (skeleton.TrackingState == SkeletonTrackingState.PositionOnly) { //temDrawSkeletonPosition(skeleton.Position); } } else { Console.WriteLine("null Skeleton"); } } } catch (Exception ex) { this.Text="Kinect失去连结,请检查USB或电源"; } } //处理各个节点移动数据 private void DrawTrackedSkeletonJoints(JointCollection jointCollection) { // String s = kinect.UniqueKinectId; //以下为获取左右手、臂、膝盖、脚和头部的跟踪数据 // Render Head and Shoulders //DrawBone(jointCollection[JointType.Head], jointCollection[JointType.ShoulderCenter]); //DrawBone(jointCollection[JointType.ShoulderCenter], jointCollection[JointType.ShoulderLeft]); //DrawBone(jointCollection[JointType.ShoulderCenter], jointCollection[JointType.ShoulderRight]); // Render Left Arm drarHand(true,jointCollection[JointType.HandLeft]); //DrawBone(jointCollection[JointType.ShoulderLeft], jointCollection[JointType.ElbowLeft]); // DrawBone(jointCollection[JointType.ElbowLeft], jointCollection[JointType.WristLeft]); //DrawBone(jointCollection[JointType.WristLeft], jointCollection[JointType.HandLeft]); // Render Right Arm drarHand(false,jointCollection[JointType.HandRight]); //DrawBone(jointCollection[JointType.ShoulderRight], jointCollection[JointType.ElbowRight]); // DrawBone(jointCollection[JointType.ElbowRight], jointCollection[JointType.WristRight]); //DrawBone(jointCollection[JointType.WristRight], jointCollection[JointType.HandRight]); // Render other bones... } int srcXLeft, srcYLeft; int srcXRight, srcYRight; //画左右手的点 private void drarHand(Boolean isLeft,Joint joint) { if (joint.TrackingState == JointTrackingState.Tracked && joint.TrackingState == JointTrackingState.Tracked) { ColorImagePoint cp1 = kinect.MapSkeletonPointToColor(joint.Position, ColorImageFormat.RgbResolution640x480Fps30); Point po = new Point((int)cp1.X, (int)cp1.Y); Console.WriteLine("to draw Ellipse x:" + po.X + " y:" + po.Y); if (isLeft) { Pen srcP = new Pen(this.BackColor, 4); g.DrawEllipse(srcP, srcXLeft, srcYLeft, 30,10); Pen p = new Pen(Color.Red, 4); g.DrawEllipse(p, po.X, po.Y, 30, 10); srcXLeft = po.X; srcYLeft = po.Y; } else { Pen srcP = new Pen(this.BackColor, 4); g.DrawEllipse(srcP, srcXRight, srcYRight,20, 20); Pen p = new Pen(Color.Green, 4); g.DrawEllipse(p, po.X, po.Y, 20, 20); srcXRight = po.X; srcYRight = po.Y; } } } }
相关推荐
通过分析和学习这个【Kinect 源代码Demo】,开发者不仅可以掌握Kinect设备的基本操作,还能深入了解如何在实际项目中利用其强大的功能,实现创新的交互式应用。无论是游戏开发、增强现实应用,还是体感控制,这份源...
以前收集的 KinectEarthMove zip Kinect Adjustable Angle 1 rar paint 代码 zip KinectRipplelicious zip KinectEarthMove zip 还有就不列了
标题“Robert Walter的kinect 手指识别代码”揭示了一个项目,该项目专注于使用微软的Kinect设备进行手指识别。Kinect是一种体感输入设备,它能够捕捉到人体的三维运动,使得用户可以通过身体动作与电脑交互,而无需...
标题 "kinect字符化 processing 实现代码" 涉及到的是使用Processing编程语言和Microsoft Kinect传感器来实现一种创新的视觉效果,即将现实世界中的物体转化为字符或ASCII艺术的项目。这种技术通常被称为“ASCII视频...
它可能包含基本的设置步骤、代码示例以及如何处理Kinect数据的说明。 最后,`KinectChooserExTest`可能是单元测试或集成测试的集合,用于验证Kinect与WPF应用的交互功能是否正常工作,确保代码的稳定性和可靠性。 ...
Kinect体感器驱动程序源代码是针对微软的Kinect设备进行开发的一种开源驱动项目,主要由freenect库提供。这个驱动程序允许开发者通过编程接口与Kinect设备交互,获取其捕获的各种数据,包括视频流、深度图以及骨骼...
KinectFusion是一种基于微软Kinect传感器的实时三维重建技术,它通过融合来自RGB-D(颜色与深度)摄像头的数据,构建环境的3D模型。在本案例中,“kinectfusion程序”显然是一款能够运行并展示KinectFusion功能的...
本资源是关于在VirTools环境下使用Kinect的动态链接库(DLL)源代码,其主要目的是利用C++编程语言和OpenNI框架来开发一个插件,以实现在VirTools中读取和处理来自Kinect的数据,进行手势识别和跟踪。 首先,我们来...
通过阅读和理解这些代码,开发者可以快速掌握Kinect深度识别的基本操作,并在此基础上开发更复杂的应用。 总的来说,Kinect深度识别技术结合了硬件设备与软件算法,为开发者提供了一种有效的方式来获取和理解3D环境...
《Kinect视频采集代码详解及应用》 在数字化时代的今天,Kinect作为一款创新的人体动作捕捉设备,因其独特的人机交互方式,在游戏、教育、医疗等多个领域得到了广泛应用。然而,如何有效地进行Kinect视频采集并保存...
在《Kinect for Windows SDK v2.0开发笔记 十八 Fusion 基本2D显示》中,作者可能讲解了如何将3D重建结果转化为2D视图。在2D显示中,可以使用投影技术将3D模型的表面映射到2D平面上,形成一种透视效果。这通常包括...
基于Kinect的人脸识别代码的实现。使用了三维人脸跟踪,PCA人脸识别,统计方法,和正脸判断。
标题中的“kinect获取摄像头内参Matlab代码”是指利用微软的Kinect设备,并通过Matlab编程来获取摄像头的内在参数。Kinect是一款基于深度传感器的体感输入设备,广泛应用于三维重建、人机交互等领域。在计算机视觉中...
通过阅读这些文件,开发者可以更深入地理解Kinect v2 SDK在VB.NET中的应用,并且可以直接使用或修改这些代码作为自己的项目起点。 总的来说,通过Kinect v2 SDK与VB.NET的结合,开发者可以创造出创新且引人入胜的...
Kinect驱动源代码是开发基于微软Kinect设备的软件应用的基础。Kinect是一款革命性的外设,它将深度传感器、摄像头和麦克风集成在一起,允许用户通过身体动作和语音进行交互,无需物理接触。在编程领域,理解并利用...
在"Kinect代码"这个压缩包中,应该包含了实现上述功能的源代码。开发者可能使用C++、C#或Python等语言,结合OpenCV、Kinect SDK等相关库来编写程序。这些代码可能包含数据读取、预处理、手势识别、轨迹转换等多个...
资源包含源代码、可执行程序,项目。 本资源与Blog《Kinect开发之体感举起手来程序设计(Kinect俄罗斯方块)》配套。 如果您下载到了本资源。请去blog上看原文,方便一起学习交流。 游戏需要Kinect SDK的支持,请先...
通过对这些源码的深入学习和实践,开发者可以掌握使用Java进行Kinect开发的基本技能,进而开发出自己的交互式应用或增强现实项目。这本书的Java版源码为理解和应用计算机视觉技术提供了一个宝贵的起点。
Kinect 资源 C++ 知识点总结 Kinect 是一个由 Microsoft 公司推出的感应器设备,可以捕捉用户的动作和骨架数据,并将其应用于游戏、娱乐、健康等领域。...这些步骤都是使用 Kinect 感应器的基本步骤。