コード例 #1
0
ファイル: Form1.cs プロジェクト: tomotom1993zzz/test2
        public async Task <Mat[]> ProjectPatternsAndCaptureAsync()
        {
            var originalPixelFormat = episcan.Sensor.PixelFormat;

            episcan.Sensor.PixelFormat = MySensor.PixelFormatList.Mono8;
            var frames = new List <Mat>();

            for (int i = 0; i < structuredLight.PatternImages.Length; i++)
            {
                var pattern = structuredLight.PatternImages[i];
                episcan.Screen.BackgroundImage = pattern;
                //Application.DoEvents();
                await Task.Delay(100);

                if (episcan.Sensor == null)
                {
                    throw new NullReferenceException();
                }

                var frame = await episcan.CaptureAverage(4);

                frames.Add(frame);
                Cv2.ImWrite($"temp_{i}.png", frame);
                //ImageFileUtil.Png.SaveGray8($"temp_{i}.png", Roi[2], Roi[3], arr);
            }

            episcan.Sensor.PixelFormat = originalPixelFormat;
            return(frames.ToArray());
        }
コード例 #2
0
    public async Task Run(MyEpiscan episcan)
    {
        if (YMin < 0)
        {
            YMin = 0;
        }
        if (YMax < 0)
        {
            YMax = episcan.Screen.Size.Height;
        }

        // generate patterns
        var projSize = new Size(episcan.Screen.Size.Width, episcan.Screen.Size.Height);
        var projNum  = (YMax - YMin) / Shift;

        var patterns = new List <Mat>();

        for (int i = Math.Max(YMin, 0); i < Math.Min(YMax - Width, YMax - 1); i += Shift)
        {
            var pattern = new Mat(projSize, MatType.CV_8UC1);
            pattern.RowRange(i, i + Width).SetTo(255);
            patterns.Add(pattern);
        }
        // Switch to synchronized mode
        episcan.Sensor.ShutterMode = MySensor.ShutterModeList.Rolling;

        // capture and save
        for (int i = 0; i < patterns.Length; i++)
        {
            var pattern = patterns[i];
            episcan.Screen.BackgroundMat = pattern;
            await Task.Delay(100);

            var captured = await episcan.CaptureAverage(AverageNum);

            var filename = $"line_{i:D4}.png";
            Cv2.ImWrite(filename, captured);
        }
    }
コード例 #3
0
    public async Task Run(MyEpiscan episcan)
    {
        // generate patterns
        var projSize = new Size(episcan.Screen.Size.Width, episcan.Screen.Size.Height);
        var pattern  = new Mat(projSize, MatType.CV_8UC1);

        pattern.ColRange(projSize.Width / 2 - 50, projSize.Width / 2 + 50).SetTo(255);

        episcan.Screen.BackgroundMat = pattern;
        await Task.Delay(100);

        // Switch to synchronized mode
        episcan.Sensor.ShutterMode = MySensor.ShutterModeList.Rolling;
        for (int delay = DelayMin, i = 0; delay < DelayMax; delay += Shift, i++)
        {
            episcan.SetDelayExposure(delay, Exposure);
            await Task.Delay(1);

            var captured = await episcan.CaptureAverage(AverageNum);

            var filename = $"capture_{i:D5}_{(int)delay:D5}.png";
            Cv2.ImWrite(filename, captured);
        }
    }