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(); }
private async void ActivateCalibrationColorSkin() { while (!ColorSkinCalibration.CalibrationStarted) { ColorSkinCalibration.ActivateCalibration(_currentFrame, Config.ColorSkinCalibrationConfig); CalibrateColorSkinCommand.RaiseCanExecuteChanged(); await Task.Delay(20); } }