check point
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
using Hawkeye.VisionBuilder.Workflow.Datatypes;
|
||||
using Hawkeye.VisionBuilder.Workflow.Operations.Attributes;
|
||||
using OpenCvSharp;
|
||||
|
||||
namespace Hawkeye.VisionBuilder.Workflow.Operations.Basic;
|
||||
|
||||
[Category("Basic")]
|
||||
public class SkeletonOperation:BaseOperation
|
||||
{
|
||||
protected override void InterpretInternal(Context context)
|
||||
{
|
||||
if (!CheckImageExists(context)) return;
|
||||
if(!CheckGrayscale(context)) return;
|
||||
|
||||
|
||||
var skeleton = new Mat(context.ActiveImage.ImageData.Size(), MatType.CV_8UC1, 0);
|
||||
var temp = context.ActiveImage.ImageData.Clone();
|
||||
var element = Cv2.GetStructuringElement(MorphShapes.Cross, new OpenCvSharp.Size(3, 3));
|
||||
var image = context.ActiveImage.ImageData.Clone();
|
||||
|
||||
do
|
||||
{
|
||||
var eroded = image.Erode(element);
|
||||
|
||||
temp =eroded.Dilate(element);
|
||||
|
||||
Cv2.Subtract(image,temp, temp);
|
||||
Cv2.BitwiseOr(skeleton, temp, skeleton);
|
||||
|
||||
eroded.CopyTo(image);
|
||||
} while (Cv2.CountNonZero(image) != 0);
|
||||
|
||||
context.ActiveImage = new HawkeyeImage()
|
||||
{
|
||||
ImageData = skeleton
|
||||
};
|
||||
|
||||
Result = true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user