Files
HawkeyeVision/Hawkeye.VisionBuilder.Workflow/Operations/Basic/GaussianBlurOperation.cs
2025-07-14 12:03:59 +02:00

51 lines
1.3 KiB
C#

using Hawkeye.VisionBuilder.Workflow.Datatypes;
using Hawkeye.VisionBuilder.Workflow.Operations.Attributes;
namespace Hawkeye.VisionBuilder.Workflow.Operations.Basic;
[Category("Basic")]
public class GaussianBlurOperation : BaseOperation
{
public ScriptValue KernelSize { get; set; } = new ScriptValue() { Script = "3" };
protected override void InterpretInternal(Context context)
{
if (!CheckImageExists(context)) return;
var kernelSize = GetScriptValue<int>(KernelSize);
if (kernelSize < 1||IsEven(kernelSize))
{
Status = $"{nameof(KernelSize)} should be more than 0 and be odd number";
Result = false;
return;
}
context.ActiveImage = new HawkeyeImage()
{
ImageData = context.ActiveImage.ImageData.GaussianBlur(new OpenCvSharp.Size(kernelSize, kernelSize), 0, 0)
};
Status = $"Gaussian blur with kernel size {KernelSize}";
Result = true;
}
private bool IsEven(int kernelSize)
{
return kernelSize % 2 == 0;
}
public override void Save(BinaryWriter bw)
{
base.Save(bw);
bw.Write(KernelSize.Script);
}
public override void Load(BinaryReader br)
{
base.Load(br);
KernelSize.Script = br.ReadString();
}
}