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

标签 c# c++ kinect kinect-sdk

我能够在 Kinect SDK beta 3 中做到这一点,但从那以后我就没有为 Kinect 开发过很多东西似乎已经改变了。

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

问题

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

如有任何帮助,我们将不胜感激!

最佳答案

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 个流的功能。

关于c# - 如何将kinect骨架数据保存到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15419296/

相关文章:

c# - 如何创建引用 Excel 中名称的 Excel 范围对象 (c#)

c# - 在 ASMX Web 服务之间共享枚举

c++ - 为什么在这个复制赋值构造函数结束时没有释放获取的资源?

c++ - 无法解析成对 vector 的 STL 排序中的模板

c++ - 检查两种类型是否属于同一模板

c# - 将方法扩展作为参数传递

c# - 如何并行化 Kinect AllFramesReady 事件

java - 检测数字的变化

c# - 如何将信息从 Kinect 发送到 Arduino?

c# - WCF 无法解析 Java Soap 响应