我正在尝试使用 Kinect 创建一个程序,在该程序中观察用户,程序的输出告诉用户行走的方向。
我的意思是,如果用户向前走,输出应该是.. UP
0 <= 8 <= // the user (8) is walking forward (<=) to the camera (0=kinect)
如果用户往回走,则输出应为 DOWN。如果用户向左走,则输出应为 LEFT。RIGHT 也是如此。
直到我拥有的是:
private static KinectSensor kinectSensor;
static void Main(string[] args)
{
kinectSensor = KinectSensor.KinectSensors[0];
kinectSensor.SkeletonStream.Enable();
kinectSensor.Start();
kinectSensor.SkeletonFrameReady += kinectRuntime_SkeletonFrameReady;
while (true) { }
}
private static Skeleton[] data;
static void kinectRuntime_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
{
if (skeletonFrame != null)
{
if ((data == null) || (data.Length != skeletonFrame.SkeletonArrayLength))
data = new Skeleton[skeletonFrame.SkeletonArrayLength];
skeletonFrame.CopySkeletonDataTo(data);
foreach (Skeleton ske in data)
{
if (ske.TrackingState == SkeletonTrackingState.Tracked)
{
var joints = ske.Joints;
foreach (Joint joint in ske.Joints)
{
if (joint.JointType == JointType.HandLeft)
{
Console.WriteLine(joint.Position.X.ToString(".##"));
Console.WriteLine(joint.Position.Y.ToString(".##"));
Console.WriteLine(joint.Position.Z.ToString(".##"));
}
}
}
}
}
}
}
这只是告诉你左手的位置。我对 Kinect 库了解不多,所以我需要一点帮助来做这件事。
我看过帖子,但我仍然不明白这对我有什么帮助。