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 Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;
namespace 漫水填充
{
public partial class Form1 : Form
{
static string filename;//文件图像
//static string beijing;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog open = new OpenFileDialog();
if (open.ShowDialog() == DialogResult.OK)
{
filename = open.FileName;
manshuitianchong();
}
}
private void manshuitianchong()
{
Image<Gray, byte> gray = new Image<Gray, byte>(filename);
CvInvoke.cvThreshold(gray, gray, 100, 255, Emgu.CV.CvEnum.THRESH.CV_THRESH_BINARY);
pictureBox_src.Image = gray.ToBitmap();
Point point = new Point();
MCvConnectedComp mo = new MCvConnectedComp();
MCvScalar newVal = new MCvScalar();
newVal.v0 = 128;
newVal.v1 = 128;
newVal.v2 = 128;
MCvScalar upDiff = new MCvScalar();
upDiff.v0 = 255;
upDiff.v1 = 255;
upDiff.v2 = 255;
MCvScalar loDiff = new MCvScalar();
loDiff.v0 = 1;
loDiff.v1 = 1;
loDiff.v2 = 1;
point.X = gray.Width /5 ;
point.Y = gray.Height /5;
CvInvoke.cvFloodFill(gray, point, newVal, loDiff, upDiff, out mo, 4, IntPtr.Zero);//将种子点所在的连通域内的
//所有区域变成newVal
pictureBox_dst.Image = gray.ToBitmap();
}
}
}