如何校准 kinect 骨架数据以传输视频?

发布于 2024-12-04 08:30:45 字数 48 浏览 0 评论 0原文

如何校准 xna 相机投影,以便 kinect 的骨架数据点在叠加时与视频源对齐?

How do I calibrate an xna camera projection so that kinect's skeleton data points line up with the video feed when overlayed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光瘦了 2024-12-11 08:30:45

我已经在 WPF 中完成了此操作,我认为它与 XNA 相同。

这是我使用的代码,我相信它取自 SDK 文档中的示例 Kinect 项目之一。您的结果可能会有所不同。请注意,320x240 部分似乎与您使用的实际分辨率无关。我将深度流设置为 640x480,将 RGB 流设置为 1280x1024。

nui 是我的运行时对象。

private Point getDisplayPosition(Joint joint)
{
    float depthX, depthY;
    nui.SkeletonEngine.SkeletonToDepthImage(joint.Position, out depthX, out depthY);
    depthX = Math.Max(0, Math.Min(depthX * 320, 320));  //convert to 320, 240 space
    depthY = Math.Max(0, Math.Min(depthY * 240, 240));  //convert to 320, 240 space

    int colorX, colorY;
    ImageViewArea iv = new ImageViewArea();
    // only ImageResolution.Resolution640x480 is supported at this point
    nui.NuiCamera.GetColorPixelCoordinatesFromDepthPixel(ImageResolution.Resolution640x480, iv, (int)depthX, (int)depthY, (short)0, out colorX, out colorY);

    return new Point(colorX, colorY);
}

I've done this in WPF, I assume it will be the same with XNA..

This is the code I used, which I believe was taken from one of the sample Kinect projects in the SDK's documentation. Your results may vary. Note that the 320x240 part seems to have nothing to do with the actual resolution you're using.. I had the depth stream set to 640x480 and the RGB stream set to 1280x1024.

nui is my Runtime object.

private Point getDisplayPosition(Joint joint)
{
    float depthX, depthY;
    nui.SkeletonEngine.SkeletonToDepthImage(joint.Position, out depthX, out depthY);
    depthX = Math.Max(0, Math.Min(depthX * 320, 320));  //convert to 320, 240 space
    depthY = Math.Max(0, Math.Min(depthY * 240, 240));  //convert to 320, 240 space

    int colorX, colorY;
    ImageViewArea iv = new ImageViewArea();
    // only ImageResolution.Resolution640x480 is supported at this point
    nui.NuiCamera.GetColorPixelCoordinatesFromDepthPixel(ImageResolution.Resolution640x480, iv, (int)depthX, (int)depthY, (short)0, out colorX, out colorY);

    return new Point(colorX, colorY);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文