/// <summary> /// Processing loop, captures an image and processes it /// </summary> private void Application_Idle() { while (true) { try { Image <Bgr, byte> tempFrame = captured_frame = CameraManager.GetImage(); if (CaptureSettings.Instance().DEFAULT_DILATATION != 0) { tempFrame._Dilate((int)CaptureSettings.Instance().DEFAULT_DILATATION); } if (CaptureSettings.Instance().DEFAULT_ERODE != 0) { tempFrame._Erode((int)CaptureSettings.Instance().DEFAULT_ERODE); } if (CaptureSettings.Instance().DEFAULT_GAMMA != 1) { tempFrame._GammaCorrect((double)CaptureSettings.Instance().DEFAULT_GAMMA); } if (CaptureSettings.Instance().DEFAULT_INVERT_ENABLED) { tempFrame._Not(); } if (CaptureSettings.Instance().DEFAULT_NORMALIZE_ENABLED) { tempFrame._EqualizeHist(); } // fix rotation if (CalibrationSettings.Instance().CALIBRATION_ROTATION != 0) { tempFrame = tempFrame.Rotate(CalibrationSettings.Instance().CALIBRATION_ROTATION, new Bgr(0, 0, 0), true); } processor.ProcessImage(tempFrame); if (interactiveWindow != null && interactiveWindow.IsVisible) { interactiveWindow.DrawImage(tempFrame, processor); } InputLogic(); } catch { // no-op here } } }