32 lines
1.0 KiB
C#
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;
|
|
}
|
|
} |