使用textbox show出各個blob的中心點座標
圖片:1-1.bmp
##ReadMore##
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using AForge.Imaging; using AForge.Imaging.Formats; using AForge.Imaging.Filters; using AForge.Math; using AForge.Video; namespace examination_d { public partial class Form1 : Form { Bitmap srcImg; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { srcImg = ImageDecoder.DecodeFromFile("1-1.bmp"); pictureBox1.Image = srcImg; } private void button2_Click(object sender, EventArgs e) { int largestarea, ii, blobcount, totalarea, avearea; Grayscale grayFilter = new Grayscale(0.2125, 0.7154, 0.0721); Bitmap grayImg = grayFilter.Apply(srcImg); pictureBox2.Image = grayImg; Threshold thresFilter = new Threshold(254); Bitmap bimage = thresFilter.Apply(grayImg); pictureBox3.Image = bimage; // create an instance of blob counter algorithm BlobCounterBase bc = new BlobCounter(); // set filtering options bc.FilterBlobs = true; bc.MinWidth = 5; bc.MinHeight = 5; // set ordering options bc.ObjectsOrder = ObjectsOrder.Size; // process binary image bc.ProcessImage(bimage); Blob[] blobs = bc.GetObjectsInformation(); // extract the biggest blob largestarea = blobs[0].Area; textBox1.Text = largestarea.ToString(); blobcount = bc.ObjectsCount; textBox2.Text = bc.ObjectsCount.ToString(); textBox7.Text = blobs[0].CenterOfGravity.ToString(); totalarea = 0; for (ii = 0; ii < blobcount; ii++) { totalarea = totalarea + blobs[ii].Area; listBox1.Items.Add(blobs[ii].Area.ToString()); } for (ii = 0; ii < blobcount; ii++) { listBox2.Items.Add("blobs[" + ii + "] = (" + Convert.ToInt16(blobs[ii].CenterOfGravity.X).ToString() + ", " + Convert.ToInt16(blobs[ii].CenterOfGravity.Y).ToString() + ")"); } textBox4.Text = totalarea.ToString(); avearea = totalarea / blobcount; textBox5.Text = avearea.ToString(); Invert filterinv = new Invert(); Bitmap invimg = filterinv.Apply(bimage); pictureBox4.Image = invimg; // create filter Subtract filtersub = new Subtract(invimg); // apply the filter Bitmap blobimg = filtersub.Apply(grayImg); pictureBox5.Image = blobimg; // gather statistics ImageStatistics stat = new ImageStatistics(blobimg); // get red channel's histogram Histogram gray = stat.Gray; int blobimgarea = stat.PixelsCountWithoutBlack; double blobmean = gray.Mean * blobimg.Height * blobimg.Width / blobimgarea; textBox6.Text = blobmean.ToString(); } } }
沒有留言:
張貼留言