使用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();
        }
    }
}

 
沒有留言:
張貼留言