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