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

32 lines
1.0 KiB
C#

using Hawkeye.VisionBuilder.Workflow.Datatypes;
using Hawkeye.VisionBuilder.Workflow.Operations.Attributes;
using OpenCvSharp;
namespace Hawkeye.VisionBuilder.Workflow.Operations.Transformations;
[Category("Transformations")]
public class DistanceTransformOperation:BaseOperation
{
protected override void InterpretInternal(Context context)
{
if (!CheckImageExists(context)) return;
if(!CheckGrayscale(context))return;
Mat res=new Mat(context.ActiveImage.ImageData.Size(),MatType.CV_8UC1);
var distance = context.ActiveImage.ImageData.DistanceTransform(DistanceTypes.C, DistanceTransformMasks.Mask3);
Cv2.MinMaxLoc(distance, out double minVal, out var maxVal);
// clamp the distance transform to 0-255
Cv2.Normalize(distance, res, 0, maxVal, NormTypes.MinMax, MatType.CV_8UC1);
context.ActiveImage = new HawkeyeImage()
{
ImageData = res
};
Status = $"Distance transform";
Result = true;
}
}