将Kinect方法从Beta 2转换为版本1 [英] Converting Kinect Methods from Beta 2, to Version 1
本文介绍了将Kinect方法从Beta 2转换为版本1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
因此,我已将getDisplayPosition
从Kinect SDK的Beta版转换为完整版.这就是我现在拥有的
原始
So I have convert the getDisplayPosition
from the beta version of the Kinect SDK to the full version. Here's what I have right now
The 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));
}
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));
}
基本上,我想知道我的版本是否会执行与原始版本相同的操作,如果不能,则如何解决.
Basically I want to know if my version will do the same thing as the original, and if not, how to fix it.
推荐答案
这就是我所做的,并且对我有用(这与您的工作非常相似)-希望对您有所帮助:
This is what I did and it works for me (this is very similar to yours) - I hope it helps:
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));
}
这篇关于将Kinect方法从Beta 2转换为版本1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文