如何使用Kinect检测完美的肩部中心位置?

时间:2014-06-02 08:52:02

标签: c# xna kinect kinect-sdk

我正在尝试检测骷髅的肩部位置。我使用以下代码获取骨架中心位置并在其上放置Cloth图像。我面临的问题是它没有将Cloth图像放在Skeleton的中心,我必须添加更多的值才能将Cloth放在骨架的中心。

问题尚未完成。添加一些值后,它在我的身体上工作正常。我是5' 6",但是如果一个6英尺的骨架进来,布料图像不会到达它的中心,我必须为SKeletonCenter Value添加更多值,以便将布料图像完美地放在6英尺上骨架。在添加这些值之后,它就不会在5' 6"骨架。

因为我必须为不同的骨架添加不同的值,这非常烦人且实际上不可能。

我知道我在获取骷髅中心位置时做错了,请告诉我一个合适的方法。

              origin = new Vector2(currentShirt.Width / 2,0);


     if (shoulderCenter.TrackingState == JointTrackingState.Tracked)
                            {

                                //SHOULDER Center
                                shoulderCenterPos = sensor.CoordinateMapper.MapSkeletonPointToDepthPoint(shoulderCenter.Position, DepthImageFormat.Resolution640x480Fps30);

                                shirtXposition = shoulderCenterPos.X;// -180;
                                shirtYposition = shoulderCenterPos.Y;// +20; 
            }

    //Draw Method
    //If i dont add these values in ShirtXposition and ShirtYPosition it would place shirt somewhere in the top.

    //CustomShirtWidth=300
    //CustomShirtHeight= 550


   spriteBatch.Draw(currentShirt, new Rectangle((int)(shirtXposition)-90, (int)(shirtYposition)+240, (int)(customShirtWidth), (int)(customShirtHeight)),Color.White);

修改 //对于高度和宽度我正在使用它。 这个问题是,它不断改变图像的大小,当我将它分配给一个常量变量时​​,它会给我一个错误信息。

                DepthImagePoint rightShoulderPt = sensor.CoordinateMapper.MapSkeletonPointToDepthPoint(rightShoulder.Position, DepthImageFormat.Resolution640x480Fps30);
                DepthImagePoint leftShoulderPt = sensor.CoordinateMapper.MapSkeletonPointToDepthPoint(leftShoulder.Position, DepthImageFormat.Resolution640x480Fps30);

                float totalWidth = rightShoulderPt.X - leftShoulderPt.X;
                float totalHeight = Head.Position.Y - hipsCenter.Position.Y;

0 个答案:

没有答案