2016-03-16 8 views
1

Я пишу программу на C# с Kinect V2 SDK и пытаюсь записать данные Body. Я попытался просто сохранить BodyFrame в файл, но он не сериализуем, и ни один из них не является классом Body. Какой был бы лучший способ сделать это? Мое настоящее мышление заключается в том, чтобы сохранять позиционные данные для каждого сустава в каждом теле в каждом кадре, но у меня есть чувство, которое усложняется очень быстро. Предложения? Я приложил часть кода Microsoft BodyBasics от Microsoft, где он разбивает данные тела на суставы. Благодаря!Kinect V2- Сохранение данных тела

if (body.IsTracked) 
{ 
    //this.DrawClippedEdges(body, dc); 
    IReadOnlyDictionary<JointType, Joint> joints = body.Joints; 

    // convert the joint points to depth (display) space 
    Dictionary<JointType, Point> jointPoints = new Dictionary<JointType, Point>(); 

    foreach (JointType jointType in joints.Keys) 
    { 
     // sometimes the depth(Z) of an inferred joint may show as negative 
     // clamp down to 0.1f to prevent coordinatemapper from returning (-Infinity, -Infinity) 
     CameraSpacePoint position = joints[jointType].Position; 
     if (position.Z < 0) 
     { 
      position.Z = InferredZPositionClamp; 
     } 

     DepthSpacePoint depthSpacePoint = this.coordinateMapper.MapCameraPointToDepthSpace(position); 
     jointPoints[jointType] = new Point(depthSpacePoint.X, depthSpacePoint.Y); 
     } 

ответ

1

JSON.net.

static List<Body> trackedBodies = new List<Body>(); 
trackedBodies = bodies.Where(b => b.IsTracked == true).ToList(); 
if (trackedBodies.Count() < 1) 
    return null; 
string kinectBodyDataString = JsonConvert.SerializeObject(trackedBodies); 
+0

Будет ли это работать, даже если класс Body не является сериализуемым? – Charuzu

+0

Я использовал его, это сработало для меня. –

+0

@Charuzu дайте мне знать, если это сработает. –