private void RemoveTracker(int trackingId) { var tracker = skeletonFaceTrackers[trackingId]; tracker.Dispose(); skeletonFaceTrackers.Remove(trackingId); FaceTrackers.Remove(tracker); }
public void TrackFrame(ColorImageFormat colorImageFormat, byte[] colorImage, DepthImageFormat depthImageFormat, DepthImagePixel[] depthImage, IEnumerable <Skeleton> skeletons, int frameNumber) { if (_currentColorImageFormat != colorImageFormat) { _currentColorImageFormat = colorImageFormat; //_colorMappedDepthPoints = CreateDepthImagePointsFromColorFormat(colorImageFormat); } //var mapper = this.Kinect.CoordinateMapper; //mapper.MapColorFrameToDepthFrame(colorImageFormat, depthImageFormat, depthImage, _colorMappedDepthPoints); foreach (var skeleton in skeletons) { if (skeleton.TrackingState == SkeletonTrackingState.Tracked || skeleton.TrackingState == SkeletonTrackingState.PositionOnly) { // We want keep a record of any skeleton, tracked or untracked. if (!this.skeletonFaceTrackers.ContainsKey(skeleton.TrackingId)) { var tracker = new SkeletonFaceTracker(); this.skeletonFaceTrackers.Add(skeleton.TrackingId, tracker); FaceTrackers.Add(tracker); } // Give each tracker the upated frame. SkeletonFaceTracker skeletonFaceTracker; if (this.skeletonFaceTrackers.TryGetValue(skeleton.TrackingId, out skeletonFaceTracker)) { skeletonFaceTracker.OnFrameReady(this.Kinect, colorImageFormat, colorImage, depthImageFormat, depthImage, null, skeleton); skeletonFaceTracker.LastTrackedFrame = frameNumber; } } } this.RemoveOldTrackers(frameNumber); RaiseFrameUpdated(); }