private void Clean() { if (swipeGestureRecognizer != null) { swipeGestureRecognizer.OnGestureDetected -= OnGestureDetected; } if (audioManager != null) { audioManager.Dispose(); audioManager = null; } if (parallelCombinedGestureDetector != null) { parallelCombinedGestureDetector.Remove(swipeGestureRecognizer); parallelCombinedGestureDetector.Remove(circleGestureRecognizer); parallelCombinedGestureDetector = null; } CloseGestureDetector(); ClosePostureDetector(); if (voiceCommander != null) { voiceCommander.OrderDetected -= voiceCommander_OrderDetected; voiceCommander.Stop(); voiceCommander = null; } if (recorder != null) { recorder.Stop(); recorder = null; } if (eyeTracker != null) { eyeTracker.Dispose(); eyeTracker = null; } if (kinectSensor != null) { kinectSensor.DepthFrameReady -= kinectSensor_DepthFrameReady; kinectSensor.SkeletonFrameReady -= kinectRuntime_SkeletonFrameReady; kinectSensor.ColorFrameReady -= kinectRuntime_ColorFrameReady; kinectSensor.Stop(); kinectSensor = null; } }
/// <summary> /// Called at the start when the window is loaded /// </summary> private void InitializeKinect() { using (Stream recordStream = File.Open(@"circleKB.save", FileMode.OpenOrCreate)) { this.circleDetector = new TemplatedGestureDetector("Circle", recordStream); this.circleDetector.DisplayCanvas = videoCanvas; this.circleDetector.OnGestureDetected += OnHandGesture; } this.gestureDetector = new SwipeGestureDetector(); this.gestureDetector.DisplayCanvas = videoCanvas; this.gestureDetector.OnGestureDetected += OnHandGesture; ParallelCombinedGestureDetector parallelCombinedGestureDetector = new ParallelCombinedGestureDetector(); parallelCombinedGestureDetector.OnGestureDetected += OnHandGesture; parallelCombinedGestureDetector.DisplayCanvas = videoCanvas; parallelCombinedGestureDetector.Add(circleDetector); parallelCombinedGestureDetector.Add(gestureDetector); foreach (var potentialSensor in KinectSensor.KinectSensors) { if (potentialSensor.Status == KinectStatus.Connected) { this.kinectSensor = potentialSensor; break; } } if (null != this.kinectSensor) { // Turning on skeleton stream this.kinectSensor.SkeletonStream.Enable(); this.kinectSensor.SkeletonFrameReady += this.SensorSkeletonFrameReady; // Turn on the color stream to receive color frames this.kinectSensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30); // Allocate space to put the pixels we'll receive this.colorPixels = new byte[this.kinectSensor.ColorStream.FramePixelDataLength]; // This is the bitmap we'll display on-screen this.colorBitmap = new WriteableBitmap(this.kinectSensor.ColorStream.FrameWidth, this.kinectSensor.ColorStream.FrameHeight, 96.0, 96.0, PixelFormats.Bgr32, null); // Set the image we display to point to the bitmap where we'll put the image data this.Image.Source = this.colorBitmap; // Add an event handler to be called whenever there is new color frame data this.kinectSensor.ColorFrameReady += this.SensorColorFrameReady; this.kinectSensor.Start(); } if (null == this.kinectSensor) { // Connection is failed return; } this.speech = new Speech(this.kinectSensor, grammar, this); this.speech.Start(); }
private void Initialize() { if (kinectSensor == null) return; audioManager = new AudioStreamManager(kinectSensor.AudioSource); audioBeamAngle.DataContext = audioManager; kinectSensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30); kinectSensor.ColorFrameReady += kinectRuntime_ColorFrameReady; kinectSensor.DepthStream.Enable(DepthImageFormat.Resolution320x240Fps30); kinectSensor.DepthFrameReady += kinectSensor_DepthFrameReady; kinectSensor.SkeletonStream.Enable(new TransformSmoothParameters { Smoothing = 0.5f, Correction = 0.5f, Prediction = 0.5f, JitterRadius = 0.05f, MaxDeviationRadius = 0.04f }); kinectSensor.SkeletonFrameReady += kinectRuntime_SkeletonFrameReady; swipeGestureRecognizer = new SwipeGestureDetector(); swipeGestureRecognizer.OnGestureDetected += OnGestureDetected; skeletonDisplayManager = new SkeletonDisplayManager(kinectSensor, kinectCanvas); kinectSensor.Start(); LoadCircleGestureDetector(); LoadLetterTPostureDetector(); nuiCamera = new BindableNUICamera(kinectSensor); elevationSlider.DataContext = nuiCamera; voiceCommander = new VoiceCommander("record", "stop"); voiceCommander.OrderDetected += voiceCommander_OrderDetected; StartVoiceCommander(); kinectDisplay.DataContext = colorManager; parallelCombinedGestureDetector = new ParallelCombinedGestureDetector(); parallelCombinedGestureDetector.OnGestureDetected += OnGestureDetected; parallelCombinedGestureDetector.Add(swipeGestureRecognizer); parallelCombinedGestureDetector.Add(circleGestureRecognizer); }