私は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ライブラリについてよく知らないので、これを行うにはちょっとした助けが必要です。
私はポストを見てきましたが、私はまだこれが私を助けることができるどのようにそれを得ることはありませんよ。
その7つの閉じ括弧のリストは間違いなく厄介です。おそらく何もせずに関数の終わりから落ちるのではなく、 "guard"文のいくつかを初期のリターンに変換するかもしれません。 – sarnold
の可能重複[どのようにKinectを使用する人を追跡し、従うために?](http://stackoverflow.com/questions/10185043/how-to-track-and-follow-a-person-using-kinect)に申し訳ありません –