`

Kinect基本代码备忘

 
阅读更多
   //注意: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;
                   } 
            }
        } 
     
    }

 

分享到:
评论
1 楼 师大黄飞 2013-09-17  
菜鸟飞过。。。。。。。。。。。

相关推荐

    Kinect 源代码Demo

    通过分析和学习这个【Kinect 源代码Demo】,开发者不仅可以掌握Kinect设备的基本操作,还能深入了解如何在实际项目中利用其强大的功能,实现创新的交互式应用。无论是游戏开发、增强现实应用,还是体感控制,这份源...

    Kinect源代码包

    以前收集的 KinectEarthMove zip Kinect Adjustable Angle 1 rar paint 代码 zip KinectRipplelicious zip KinectEarthMove zip 还有就不列了

    Robert Walter的kinect 手指识别代码

    标题“Robert Walter的kinect 手指识别代码”揭示了一个项目,该项目专注于使用微软的Kinect设备进行手指识别。Kinect是一种体感输入设备,它能够捕捉到人体的三维运动,使得用户可以通过身体动作与电脑交互,而无需...

    kinect字符化 processing 实现代码

    标题 "kinect字符化 processing 实现代码" 涉及到的是使用Processing编程语言和Microsoft Kinect传感器来实现一种创新的视觉效果,即将现实世界中的物体转化为字符或ASCII艺术的项目。这种技术通常被称为“ASCII视频...

    wpf代码与kinect

    它可能包含基本的设置步骤、代码示例以及如何处理Kinect数据的说明。 最后,`KinectChooserExTest`可能是单元测试或集成测试的集合,用于验证Kinect与WPF应用的交互功能是否正常工作,确保代码的稳定性和可靠性。 ...

    kinect体感器驱动程序源代码

    Kinect体感器驱动程序源代码是针对微软的Kinect设备进行开发的一种开源驱动项目,主要由freenect库提供。这个驱动程序允许开发者通过编程接口与Kinect设备交互,获取其捕获的各种数据,包括视频流、深度图以及骨骼...

    kinectfusion程序

    KinectFusion是一种基于微软Kinect传感器的实时三维重建技术,它通过融合来自RGB-D(颜色与深度)摄像头的数据,构建环境的3D模型。在本案例中,“kinectfusion程序”显然是一款能够运行并展示KinectFusion功能的...

    virtools环境下使用Kinect的动态链接库源代码

    本资源是关于在VirTools环境下使用Kinect的动态链接库(DLL)源代码,其主要目的是利用C++编程语言和OpenNI框架来开发一个插件,以实现在VirTools中读取和处理来自Kinect的数据,进行手势识别和跟踪。 首先,我们来...

    kinect深度识别代码

    通过阅读和理解这些代码,开发者可以快速掌握Kinect深度识别的基本操作,并在此基础上开发更复杂的应用。 总的来说,Kinect深度识别技术结合了硬件设备与软件算法,为开发者提供了一种有效的方式来获取和理解3D环境...

    kinect视频采集代码

    《Kinect视频采集代码详解及应用》 在数字化时代的今天,Kinect作为一款创新的人体动作捕捉设备,因其独特的人机交互方式,在游戏、教育、医疗等多个领域得到了广泛应用。然而,如何有效地进行Kinect视频采集并保存...

    KinectSDK2.0基本Fusion

    在《Kinect for Windows SDK v2.0开发笔记 十八 Fusion 基本2D显示》中,作者可能讲解了如何将3D重建结果转化为2D视图。在2D显示中,可以使用投影技术将3D模型的表面映射到2D平面上,形成一种透视效果。这通常包括...

    基于Kinect的人脸识别代码

    基于Kinect的人脸识别代码的实现。使用了三维人脸跟踪,PCA人脸识别,统计方法,和正脸判断。

    kinect获取摄像头内参Matlab代码

    标题中的“kinect获取摄像头内参Matlab代码”是指利用微软的Kinect设备,并通过Matlab编程来获取摄像头的内在参数。Kinect是一款基于深度传感器的体感输入设备,广泛应用于三维重建、人机交互等领域。在计算机视觉中...

    Kinect v2 示例代码VB,包含骨架等

    通过阅读这些文件,开发者可以更深入地理解Kinect v2 SDK在VB.NET中的应用,并且可以直接使用或修改这些代码作为自己的项目起点。 总的来说,通过Kinect v2 SDK与VB.NET的结合,开发者可以创造出创新且引人入胜的...

    kinect驱动源代码

    Kinect驱动源代码是开发基于微软Kinect设备的软件应用的基础。Kinect是一款革命性的外设,它将深度传感器、摄像头和麦克风集成在一起,允许用户通过身体动作和语音进行交互,无需物理接触。在编程领域,理解并利用...

    人机交互,智能书写,kinect代码

    在"Kinect代码"这个压缩包中,应该包含了实现上述功能的源代码。开发者可能使用C++、C#或Python等语言,结合OpenCV、Kinect SDK等相关库来编写程序。这些代码可能包含数据读取、预处理、手势识别、轨迹转换等多个...

    Kinect俄罗斯方块源代码及项目

    资源包含源代码、可执行程序,项目。 本资源与Blog《Kinect开发之体感举起手来程序设计(Kinect俄罗斯方块)》配套。 如果您下载到了本资源。请去blog上看原文,方便一起学习交流。 游戏需要Kinect SDK的支持,请先...

    Making Things See(Kinect书籍 Java版)的代码

    通过对这些源码的深入学习和实践,开发者可以掌握使用Java进行Kinect开发的基本技能,进而开发出自己的交互式应用或增强现实项目。这本书的Java版源码为理解和应用计算机视觉技术提供了一个宝贵的起点。

    kinect 资源C++

    Kinect 资源 C++ 知识点总结 Kinect 是一个由 Microsoft 公司推出的感应器设备,可以捕捉用户的动作和骨架数据,并将其应用于游戏、娱乐、健康等领域。...这些步骤都是使用 Kinect 感应器的基本步骤。

Global site tag (gtag.js) - Google Analytics