namespace Hawkeye.VisionBuilder.Workflow.Operations.Basic; using global::Hawkeye.VisionBuilder.Workflow.Datatypes; using Hawkeye.VisionBuilder.Workflow.Datatypes; using Hawkeye.VisionBuilder.Workflow.Operations.Attributes; using OpenCvSharp; [Category("Basic")] public class ThresholdMinMaxOperation : BaseOperation { public ScriptValue ThresholdMin { get; set; } = new ScriptValue() { Script = "128" }; public ScriptValue ThresholdMax { get; set; } = new ScriptValue() { Script = "255" }; public ThresholdMinMaxOperation() { CanHaveProcessingError = false; } protected override void InterpretInternal(Context context) { if (!CheckImageExists(context)) return; if (!CheckGrayscale(context)) return; context.ActiveImage = new HawkeyeImage() { ImageData = context.ActiveImage.ImageData.InRange(GetScriptValue(ThresholdMin), GetScriptValue(ThresholdMax)) }; Result = true; } public override void Save(BinaryWriter bw) { base.Save(bw); bw.Write(ThresholdMin.Script); bw.Write(ThresholdMax.Script); } public override void Load(BinaryReader br) { base.Load(br); ThresholdMin.Script = br.ReadString(); ThresholdMax.Script = br.ReadString(); } public override void Save(Dictionary dict) { base.Save(dict); dict[nameof(ThresholdMin)] = ThresholdMin.Script; dict[nameof(ThresholdMax)] = ThresholdMax.Script; } public override void Load(Dictionary dict) { base.Load(dict); if (dict.ContainsKey(nameof(ThresholdMin))) ThresholdMin.Script = dict[nameof(ThresholdMin)].ToString(); if (dict.ContainsKey(nameof(ThresholdMax))) ThresholdMax.Script = dict[nameof(ThresholdMax)].ToString(); } }