Kinect: Wie identifiziere ich das erste getrackte Skelett und wie mache ich es danach?

Wie kann ich das erste Skelett identifizieren, das der Kinect verfolgt, und dann etwas damit anfangen? Ich interessiere mich nur für das erste Skelett und was auch immer danach kommt, ich brauche sie nicht. Vorzugsweise wird das nächste Skelett, das hereinkommt, überhaupt nicht verfolgt.

Kann mir jemand dabei helfen danke. Derzeit funktioniert der unten stehende Code nicht. Ich habe einige schnelle Linq-Abfrage versucht, aber ich bin nicht sehr sicher, wie man es verwendet. Immer Fehler dabei.

Kann mir jemand ein paar Beispiele geben, mit denen ich arbeiten kann? Danke im Voraus!

private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
    {

            Skeleton[] skeletons = new Skeleton[0];


            using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
            {
                if (skeletonFrame != null)
                {
                    skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
                    skeletonFrame.CopySkeletonDataTo(skeletons);
                }
            }

            using (DrawingContext dc = this.drawingGroup.Open())
            {
                // Draw a transparent background to set the render size
                dc.DrawRectangle(Brushes.Black, null, new Rect(160, 0.0, RenderWidth, RenderHeight));

                if (skeletons.Length != 0)
                {


                   foreach (Skeleton skel in skeletons)
                    {
                        RenderClippedEdges(skel, dc);


                        if (skel.TrackingState == SkeletonTrackingState.Tracked)
                        {
                            this.TrackingId = Skel;
                            sensor.SkeletonStream.AppChoosesSkeletons = true;
                            sensor.SkeletonStream.ChooseSkeletons(skel.TrackingId);

                            this.DrawBonesAndJoints(skel, dc);

                            if (skel == null)
                            {

                                Process.Start("wmplayer.exe", "C:\\Users\\User\\Downloads\\Test.wma");
                            }
                        }
                        else if (skel.TrackingState == SkeletonTrackingState.NotTracked)
                        {
                            sensor.SkeletonStream.AppChoosesSkeletons = false;
                        }
                    }
                }

                // prevent drawing outside of our render area
                this.drawingGroup.ClipGeometry = new RectangleGeometry(new Rect(160, 0.0, RenderWidth, RenderHeight));
            }

    }

Antworten auf die Frage(2)

Ihre Antwort auf die Frage