C# 将关节保存到文本文件-Kinect v2

C# 将关节保存到文本文件-Kinect v2,c#,kinect-sdk,C#,Kinect Sdk,我试图通过Windows窗体应用程序将Kinect传感器的关节输入存储到文本文件中。我试过几种不同的方法,但似乎不管用。任何帮助都将不胜感激 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threadi

我试图通过Windows窗体应用程序将Kinect传感器的关节输入存储到文本文件中。我试过几种不同的方法,但似乎不管用。任何帮助都将不胜感激

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;   
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Kinect;
namespace kinect
{
  public partial class Form1 : Form
{
    KinectSensor KinectSensor = null;
    BodyFrameReader bodyFrameReader = null;
    Body[] bodies = null;
    public Form1()
    {

        InitialiseKinect();
    }

    public void InitialiseKinect()
    {
        KinectSensor = KinectSensor.GetDefault();
        if (KinectSensor != null)
        {
            //turn on kinect
            KinectSensor.Open();
        }
        bodyFrameReader = KinectSensor.BodyFrameSource.OpenReader();

        if (bodyFrameReader != null)
        {
            bodyFrameReader.FrameArrived += Reader_FrameArrived;

        }

    }

    private void Reader_FrameArrived(object sensor, BodyFrameArrivedEventArgs e)
    {
        bool dataRecieved = false;

        using (BodyFrame bodyFrame = e.FrameReference.AcquireFrame())
        {

            if (bodyFrame != null)
            {
                if (bodies == null)
                {
                    bodies = new Body[bodyFrame.BodyCount];
                }
                bodyFrame.GetAndRefreshBodyData(bodies);
                dataRecieved = true;
            }

            if (dataRecieved)
            {
                foreach (Body body in bodies)
                {
                    if (body.IsTracked)
                    {
                        IReadOnlyDictionary<JointType, Joint> joints = body.Joints;
                        Dictionary<JointType, Point> jointPoints = new Dictionary<JointType, Point>();

                        //Left points

                        Joint leftShoulder = joints[JointType.ShoulderLeft];

                        float ls_distance_x = leftShoulder.Position.X;
                        float ls_distance_y = leftShoulder.Position.Y;
                        float ls_distance_z = leftShoulder.Position.Z;



                        Joint leftElbow = joints[JointType.ElbowLeft];

                        float le_distance_x = leftElbow.Position.X;
                        float le_distance_y = leftElbow.Position.Y;
                        float le_distance_z = leftElbow.Position.Z;

                        Joint leftwrist = joints[JointType.WristLeft];

                        float lw_distance_x = leftwrist.Position.X;
                        float lw_distance_y = leftwrist.Position.Y;
                        float lw_distance_z = leftwrist.Position.Z;

                        Joint leftHand = joints[JointType.HandLeft];

                        float lh_distance_x = leftHand.Position.X;
                        float lh_distance_y = leftHand.Position.Y;
                        float lh_distance_z = leftHand.Position.Z;


                        Joint tipLeftHand = joints[JointType.HandTipLeft];

                        float lth_distance_x = tipLeftHand.Position.X;
                        float lth_distance_y = tipLeftHand.Position.Y;
                        float lth_distance_z = tipLeftHand.Position.Z;


                        //Right points

                        Joint rightShoulder = joints[JointType.ShoulderRight];

                        float rs_distance_x = rightShoulder.Position.X;
                        float rs_distance_y = rightShoulder.Position.Y;
                        float rs_distance_z = rightShoulder.Position.Z;

                        Joint rightElbow = joints[JointType.ElbowRight];

                        float re_distance_x = rightElbow.Position.X;
                        float re_distance_y = rightElbow.Position.Y;
                        float re_distance_z = rightElbow.Position.Z;

                        Joint rightWrist = joints[JointType.WristRight];

                        float rw_distance_x = rightWrist.Position.X;
                        float rw_distance_y = rightWrist.Position.Y;
                        float rw_distance_z = rightWrist.Position.Z;

                        Joint rightHand = joints[JointType.HandRight];

                        float rh_distance_x = rightHand.Position.X;
                        float rh_distance_y = rightHand.Position.Y;
                        float rh_distance_z = rightHand.Position.Z;


                        Joint tipRightHand = joints[JointType.HandTipRight];

                        float rth_distance_x = tipRightHand.Position.X;
                        float rth_distance_y = tipRightHand.Position.Y;
                        float rth_distance_z = tipRightHand.Position.Z;
                        float rth_distance_n = tipRightHand.Position.N;



                    }
                }
            }


        }


    }



}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows.Forms;
使用Microsoft.Kinect;
命名空间kinect
{
公共部分类Form1:Form
{
Kinect传感器Kinect传感器=零;
BodyFrameReader BodyFrameReader=null;
Body[]Body=null;
公共表格1()
{
InitialiseKinect();
}
public void InitialiseKinect()
{
KinectSensor=KinectSensor.GetDefault();
如果(KinectSensor!=null)
{
//打开kinect
KinectSensor.Open();
}
bodyFrameReader=KinectSensor.BodyFrameSource.OpenReader();
如果(bodyFrameReader!=null)
{
bodyFrameReader.FrameArrized+=读卡器\u FrameArrized;
}
}
专用无效读卡器(目标传感器,BodyFrameArrivedEventArgs e)
{
bool datareceived=false;
使用(BodyFrame BodyFrame=e.FrameReference.AcquireFrame())
{
如果(车身框架!=null)
{
if(bodies==null)
{
Bodys=新实体[bodyFrame.BodyCount];
}
bodyFrame.GetAndRefreshBodyData(实体);
DataReceived=真;
}
如果(收到数据)
{
foreach(身体中的身体)
{
如果(主体破裂)
{
IREADONLYDICTIONAL关节=身体关节;
字典连接点=新字典();
//左点
关节左肩=关节[JointType.ShoulderLeft];
浮动ls_距离_x=左肩.Position.x;
浮动ls_距离_y=左肩.Position.y;
浮动ls_距离_z=左肩.Position.z;
关节左肘=关节[JointType.ElbowLeft];
float le_distance_x=左肘.Position.x;
float le_distance_y=左肘.Position.y;
float le_distance_z=左肘.Position.z;
关节左腕=关节[JointType.WristLeft];
浮动lw_距离_x=左手腕.Position.x;
浮动lw_距离_y=左手腕.Position.y;
浮动lw_距离_z=左手腕.Position.z;
Joint leftHand=关节[JointType.HandLeft];
浮动左侧距离x=左侧位置x;
浮动左侧距离y=左侧位置y;
浮动左侧距离=左侧位置z;
关节tipLeftHand=关节[JointType.HandTipLeft];
浮动lth_距离_x=tipLeftHand.Position.x;
浮动lth_距离_y=倾斜手位置y;
浮动lth_距离_z=倾斜手位置.z;
//正确的观点
关节右肩=关节[JointType.ShoulderRight];
浮动rs_距离_x=右肩位置.x;
浮动rs_距离_y=右肩位置y;
浮动rs_距离_z=右肩位置.z;
关节右肘=关节[JointType.ElbowRight];
浮动re_距离_x=右肘.Position.x;
浮动re_距离_y=右肘.Position.y;
浮动re_距离_z=右肘.Position.z;
关节右腕=关节[JointType.WristRight];
浮动rw_距离_x=右手腕位置.x;
float rw_distance_y=右手腕.Position.y;
float rw_distance_z=右手腕.Position.z;
关节右侧=关节[JointType.HandRight];
浮动右侧距离x=右侧位置x;
浮动右侧距离y=右侧位置y;
浮动rh_距离_z=右侧位置z;
关节tipRightHand=关节[JointType.HandTipRight];
浮动rth_距离_x=tipRightHand.Position.x;
浮动rth_距离_y=倾翻手动位置.y;
浮动rth_距离_z=tipRightHand.Position.z;
浮动rth\u距离\u n=倾翻手动位置.n;
}
}
}
}
}
}
}