예제 #1
0
        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 });
                }
            };
        }
예제 #2
0
 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 });
     };
 }
예제 #3
0
        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 });
        }