如何将kinect骨架数据保存到文件中?

时间:2013-03-14 20:14:56

标签: c# c++ kinect kinect-sdk

我能够在Kinect SDK beta 3中做到这一点,但我还没有为Kinect开发过,而且似乎已经发生了很多变化。

我想将每个关节保存为变量,并将这些值写入.csv文件,我稍后可以解析。 (最好使用c#,但我也可以使用c ++版本)

问题

- 我需要调用什么才能获得每个关节的数值?

任何帮助都会得到满足!

1 个答案:

答案 0 :(得分:3)

Skeleton数据只是一系列Joint个集合,包含X / Y / Z坐标。你可以保存它们并像任何其他类型的对象一样编写它们。

Microsoft为Kinect for Windows Samples提供的多个示例中显示了获取Joint的值。请浏览这些示例,以获得使用最新Kinect SDK的基础。

以下是解析SkeletonFrame并使用单个骷髅的基本回调:

private void OnSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
    using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
    {
        if (skeletonFrame == null || skeletonFrame.SkeletonArrayLength == 0)
            return;

        // resize the skeletons array if needed
        if (_skeletons.Length != skeletonFrame.SkeletonArrayLength)
            _skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];

        // get the skeleton data
        skeletonFrame.CopySkeletonDataTo(_skeletons);

        foreach (var skeleton in _skeletons)
        {
            // skip the skeleton if it is not being tracked
            if (skeleton.TrackingState != SkeletonTrackingState.Tracked)
                continue;

            // print the RightHand Joint position to the debug console
            Debug.Writeline(skeleton.Joints[JointType.HandRight]);
        }
    }
}

此外,Kinect Toolbox附带的功能允许您录制和重播所有3个流。