public void OpenSkeleton(string path) { using (CsvFileReader reader = new CsvFileReader(path)) { sktList = new List <MySkeleton>(); CsvRow row = new CsvRow(); // one frame skeleton while (reader.ReadRow(row)) { var skt = new MySkeleton(14); if (row[0].ToLower().Trim().Equals("untracked")) { skt.Tracked = false; } else { int step = 7; // one joint for (int i = 0; i < row.Count; i += step) { var type = i / step; var joint = new MyJoint() { Pos3D = new SkeletonPoint() { X = Convert.ToSingle(row[i]), Y = Convert.ToSingle(row[i + 1]), Z = Convert.ToSingle(row[i + 2]) }, PosColor = new System.Drawing.Point() { X = (int)Convert.ToSingle(row[i + 3]), Y = (int)Convert.ToSingle(row[i + 4]) }, PosDepth = new System.Drawing.Point() { X = (int)Convert.ToSingle(row[i + 5]), Y = (int)Convert.ToSingle(row[i + 6]) } }; skt[type] = joint; } } sktList.Add(skt); } } //foreach (var mySkeleton in sktList) //{ // Console.Write(mySkeleton[MyJointType.Head].PosColor.X); //} }
public static double[][] computeVectors(MySkeleton skeleton) { MyJoint joint0 = skeleton.Joints[JointType.ShoulderLeft]; MyJoint joint1 = skeleton.Joints[JointType.ElbowLeft]; double[] vectorShoulderElbowLeft = computeVector(joint0, joint1); joint0 = skeleton.Joints[JointType.ElbowLeft]; joint1 = skeleton.Joints[JointType.WristLeft]; double[] vectorElbowWristLeft = computeVector(joint0, joint1); joint0 = skeleton.Joints[JointType.ShoulderRight]; joint1 = skeleton.Joints[JointType.ElbowRight]; double[] vectorShoulderElbowRight = computeVector(joint0, joint1); joint0 = skeleton.Joints[JointType.ElbowRight]; joint1 = skeleton.Joints[JointType.WristRight]; double[] vectorElbowWristRight = computeVector(joint0, joint1); return(new double[][] { vectorShoulderElbowLeft, vectorElbowWristLeft, vectorShoulderElbowRight, vectorElbowWristRight }); }
private static double[] computeVector(MyJoint joint0, MyJoint joint1) { return(new double[] { joint1.Position.X - joint0.Position.X, joint1.Position.Y - joint0.Position.Y, joint1.Position.Z - joint0.Position.Z }); }