将Kinect方法从Beta 2转换为版本1

所以我将getDisplayPosition从Kinect SDK的beta版转换为完整版。 这就是我现在所拥有的

原本的

  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); // map back to skeleton.Width & skeleton.Height return new Point((int)(skeleton.Width * colorX / 640.0), (int)(skeleton.Height * colorY / 480)); } 

我的版本

 private Point getDisplayPosition(Joint joint) { float depthX, depthY; KinectSensor sensor = kinectSensorChooser1.Kinect; DepthImageFormat depth = DepthImageFormat.Resolution320x240Fps30; depthX = 320; depthY = 240; sensor.MapSkeletonPointToDepth(joint.Position, depth); depthX = Math.Max(0, Math.Min(depthX * 320, 320)); depthY = Math.Max(0, Math.Min(depthY * 240, 240)); int colorX, colorY; colorX = 320; colorY = 240; return new Point((int)(skeleton.Width * colorX / 640.0), (int)(skeleton.Height * colorY / 480)); } 

基本上我想知道我的版本是否会像原版一样,如果没有,如何解决它。

这就是我所做的,它适用于我(这与你的非常相似) – 我希望它有所帮助:

我的版本

 private Point getDisplayPosition(DepthImageFrame depthFrame, Joint joint) { float depthX, depthY; DepthImagePoint depthPoint = kineticSensor.MapSkeletonPointToDepth(joint.Position, depthImageFormat); depthX = depthPoint.X; depthY = depthPoint.Y; depthX = Math.Max(0, Math.Min(depthX * 320, 320)); depthY = Math.Max(0, Math.Min(depthY * 240, 240)); int colorX, colorY; ColorImagePoint colorPoint = depthFrame.MapToColorImagePoint(depthPoint.X, depthPoint.Y, sensor.ColorStream.Format); colorX = colorPoint.X; colorY = colorPoint.Y; return new Point((int)(skeleton.Width * colorX / 640.0), (int)(skeleton.Height * colorY / 480)); }