private void WhiteWhiteDone() { int count = 0; VideoCapture.Instance.SaveFrame = bitmap => { count++; if (count > 2) { VideoCapture.Instance.SaveFrame = null; bitmap.Save(Path.Combine(Helpers.TempDir, "capture_white.png"), ImageFormat.Png); bitmap.Dispose(); SaveCursorPositionIntern(); if (!Helpers.IsDevComputer) { var errorCode = NvApi.ShowImage(_projectors[0].DisplayId, _white, _projectors[0].Resolution.Width, _projectors[0].Resolution.Height); HandleNvApiError(errorCode); errorCode = NvApi.ShowImage(_projectors[1].DisplayId, _black, _projectors[1].Resolution.Width, _projectors[1].Resolution.Height); HandleNvApiError(errorCode); } RestoreCursorPositionIntern(); AwaitProjectorsReady(WhiteBlackDone, OnCalibrationCanceled, new[] { CalibrationSteps.White, CalibrationSteps.Black }); } }; }
private void BlackWhiteDone() { VideoCapture.Instance.SaveFrame = bitmap => { VideoCapture.Instance.SaveFrame = null; bitmap.Save(Path.Combine(Helpers.TempDir, "capture_white1.png"), ImageFormat.Png); bitmap.Dispose(); SaveCursorPositionIntern(); if (!Helpers.IsDevComputer) { var errorCode = NvApi.ShowImage(_projectors[0].DisplayId, _black, _projectors[0].Resolution.Width, _projectors[0].Resolution.Height); HandleNvApiError(errorCode); if (ShowImage == null) { errorCode = NvApi.ShowImage(_projectors[1].DisplayId, _projectors[1].Pattern, _projectors[1].Resolution.Width, _projectors[1].Resolution.Height); HandleNvApiError(errorCode); } else { errorCode = NvApi.ShowImage(_projectors[1].DisplayId, _white, _projectors[1].Resolution.Width, _projectors[1].Resolution.Height); HandleNvApiError(errorCode); ShowImage(Path.Combine(Helpers.TempDir, "p1full.png")); } } RestoreCursorPositionIntern(); AwaitProjectorsReady(BlackPatternDone, OnCalibrationCanceled, new[] { CalibrationSteps.Black, CalibrationSteps.Pattern }); }; }
public void Calibrate(bool initPattern) { if (initPattern) { SetPattern(_patternSize, _patternCount, _controlPointsInsideOverlap, true); } foreach (var p in _projectors) { p.GeneratePattern(); } _black = Generate(0f); _white = Generate(1f); _black.SaveAsImage(_projectorResolution, Path.Combine(Helpers.TempDir, "black.png")); _white.SaveAsImage(_projectorResolution, Path.Combine(Helpers.TempDir, "white.png")); for (var i = 0; i < _projectors.Length; i++) { _projectors[i].SavePattern(Path.Combine(Helpers.TempDir, "p" + i + ".png")); } if (ShowImage != null) { SavePatternFull(); SaveWhiteFull(); } VideoCapture.Instance.Stop(); // TODO Marco: Kamera oder File if (Helpers.CameraCalibration) { VideoCapture.Instance.Start(true); } else { VideoCapture.Instance.StartFromFile(true); } SaveCursorPositionIntern(); ShowImage?.Invoke(Path.Combine(Helpers.TempDir, "whitefull.png")); if (!Helpers.IsDevComputer) { foreach (var p in _projectors) { var errorCode = NvApi.ShowImage(p.DisplayId, _white, p.Resolution.Width, p.Resolution.Height); HandleNvApiError(errorCode); } } RestoreCursorPositionIntern(); AwaitProjectorsReady(WhiteWhiteDone, OnCalibrationCanceled, new [] { CalibrationSteps.White, CalibrationSteps.White }); }