public BlobView(ShapeAnalyzer shapeAnalyzer, PoreAnalyzeData data) { InitializeComponent(); pictureBox1.Image = data.Bmp; listBox1.Items.Add($"Moment invariant 1: {Convert.ToDecimal(data.GeometricMoment1)}"); listBox1.Items.Add($"Moment invariant 2: {Convert.ToDecimal(data.GeometricMoment2)}"); listBox1.Items.Add($"Moment invariant 3: {Convert.ToDecimal(data.GeometricMoment3)}"); listBox1.Items.Add($"Moment invariant 7: {Convert.ToDecimal(data.GeometricMoment7)}"); listBox1.Items.Add($"Malinowska's coefficient: {Convert.ToDecimal(data.MalinowskasCoefficient)}"); listBox1.Items.Add($"Area: {Convert.ToDecimal(data.Area)}"); listBox1.Items.Add($"Shape Id: {shapeAnalyzer.Analyze(data.getShapeDescriptor())}"); }
public List <PoreAnalyzeData> FindShapes(Bitmap bitmap) { Bitmap reversedbmp = ReverseBitmapColors(bitmap); BlobCounter blobCounter = new BlobCounter(reversedbmp); Blob[] blobs = blobCounter.GetObjects(reversedbmp, false); PoreAnalyzeData[] poreData = new PoreAnalyzeData[blobs.Length]; OnStart?.Invoke(this, blobs.Length); Parallel.For(0, blobs.Length, index => { var edgePoints = blobCounter.GetBlobsEdgePoints(blobs[index]); poreData[index] = new PoreAnalyzeData(blobs[index], ReverseBitmapColors(blobs[index].Image.ToManagedImage()), edgePoints); OnProgress?.Invoke(this, new EventArgs()); }); return(poreData.ToList()); }