示例#1
0
        private async void CalibrateColorSkin()
        {
            await ColorSkinCalibration.StartCalibration(Config.ColorSkinCalibrationConfig);

            while (ColorSkinCalibration.CalibrationStarted)
            {
                await ColorSkinCalibration.AddSample(_currentFrame);

                await Task.Delay(40);
            }
            Config.SkinDetectConfig.HSVThresholdConfig.H = new MinMax {
                Min = Math.Max(ColorSkinCalibration.Result.HSV.H - 20, 0), Max = Math.Min(ColorSkinCalibration.Result.HSV.H + 20, 255)
            };
            Config.SkinDetectConfig.HSVThresholdConfig.S = new MinMax {
                Min = Math.Min(ColorSkinCalibration.Result.HSV.S - 10, 0), Max = 255
            };
            Config.SkinDetectConfig.HSVThresholdConfig.V = new MinMax {
                Min = 20, Max = 255
            };

            Config.SkinDetectConfig.YCrCbThresholdConfig.Y = new MinMax {
                Min = 0, Max = 255
            };
            Config.SkinDetectConfig.YCrCbThresholdConfig.Cr = new MinMax {
                Min = Math.Max(ColorSkinCalibration.Result.YCRCB.Cr - 20, 0), Max = Math.Min(ColorSkinCalibration.Result.YCRCB.Cr + 20, 255)
            };
            Config.SkinDetectConfig.YCrCbThresholdConfig.Cb = new MinMax {
                Min = Math.Max(ColorSkinCalibration.Result.YCRCB.Cb - 20, 0), Max = Math.Min(ColorSkinCalibration.Result.YCRCB.Cb + 20, 255)
            };

            SaveConfig();
            LoadConfig();
        }
示例#2
0
 private async void ActivateCalibrationColorSkin()
 {
     while (!ColorSkinCalibration.CalibrationStarted)
     {
         ColorSkinCalibration.ActivateCalibration(_currentFrame, Config.ColorSkinCalibrationConfig);
         CalibrateColorSkinCommand.RaiseCanExecuteChanged();
         await Task.Delay(20);
     }
 }