Convertendo Métodos do Kinect do Beta 2 para a Versão 1

Por isso, convertei o getDisplayPosition da versão beta do Kinect SDK para a versão completa. Aqui está o que eu tenho agora

O original

  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)); } 

Minha versão

 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)); } 

Basicamente eu quero saber se a minha versão fará o mesmo que a original, e se não, como consertá-la.

Isso é o que eu fiz e funciona para mim (isso é muito parecido com o seu) – espero que ajude:

Minha versão

 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)); }