Как откалибровать данные скелета Kinect в видеопоток? - PullRequest
1 голос
/ 14 сентября 2011

Как откалибровать проекцию камеры xna так, чтобы точки скелета kinect совпадали с видеопотоком при наложении?

1 Ответ

1 голос
/ 27 сентября 2011

Я сделал это в WPF, я полагаю, что это будет то же самое с XNA.

Это код, который я использовал, который, я думаю, был взят из одного из примеров проектов Kinect в SDKдокументация.Ваши результаты могут отличаться.Обратите внимание, что часть 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);
}
...