Пример #1
0
 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);
     //}
 }
Пример #2
0
        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 });
        }
Пример #3
0
 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 });
 }