private void Run() { if (_doorDetector != null && _doorDetector.IsRunning) { _doorDetector.CancelAsync(); } ColorBasedDoorDetector cDetector = _doorDetector as ColorBasedDoorDetector; if (cDetector != null) { _imageStream = VideoStream.Instance; } else { DepthBasedDoorDetector dDetector = _doorDetector as DepthBasedDoorDetector; if (dDetector != null) { _imageStream = DepthStream.Instance; } else { InfraredBasedDoorDetector iDetector = _doorDetector as InfraredBasedDoorDetector; if (iDetector != null) { _imageStream = InfraredStream.Instance; } } } if (_imageStream != null && this.DoorDetector != null) { _doorDetector.RunAsync(_imageStream); } }
//Render the background private void UpdateBackground() { //const DispatcherPriority priority = DispatcherPriority.Render; while (true) { BaseFrame frame = null; WriteableBitmap frameBitmap = null; ColorBasedDoorDetector cDetector = _doorDetector as ColorBasedDoorDetector; if (cDetector != null) { frame = VideoStream.Instance.GetFrame(); if (frame != null) { frameBitmap = frame.GetBitmap(); } } else { DepthBasedDoorDetector dDetector = _doorDetector as DepthBasedDoorDetector; if (dDetector != null) { frame = DepthStream.Instance.GetFrame(); if (frame != null) { frameBitmap = frame.GetWriteableBitmapForDoorNavi(); } } else { InfraredBasedDoorDetector iDetector = _doorDetector as InfraredBasedDoorDetector; if (iDetector != null) { frame = InfraredStream.Instance.GetFrame(); if (frame != null) { frameBitmap = frame.GetBitmap(); } } } } if (frameBitmap != null) { RenderImage(frameBitmap, ImageView1); } Thread.Sleep(1000 / FRAMERATE); } }
private void RadioButton_CheckedChanged(object sender, RoutedEventArgs e) { // ... Get RadioButton reference. var button = sender as RadioButton; string detectionMethodStr = button.Content.ToString(); if (detectionMethodStr == "ColorBased") { DoorDetector = new ColorBasedDoorDetector(); } else if (detectionMethodStr == "DepthBased") { DoorDetector = new DepthBasedDoorDetector(); } else if (detectionMethodStr == "InfraredBased") { DoorDetector = new InfraredBasedDoorDetector(); } this.Run(); }