学习图像处理知识---EmguCV3.4图像--图像形态学(一)

在EmguCV3.4图像形态学中,主要运用腐蚀,膨胀,开运算,闭运算,高帽,低帽等

其实都是采用腐蚀,膨胀这二个基本原理改造来。

在Image类和CvInvoke类中均能完成。

在Image类中比较简单:

public Image<TColor, TDepth> Erode(int iterations) //腐蚀iterations为迭代次数腐蚀,越大,黑色背景越大
public void _Erode(int iterations)//同上,只是此函数修改本图片。
public Image<TColor, TDepth> Dilate(int iterations)//膨胀iterations为迭代次数,越大白色背景越大
public void _Dilate(int iterations)//同上,只是此函数修改本图片。

CvInvoke类中,参数比较多。

public static void Dilate( //膨胀
	IInputArray src,//输入图像
	IOutputArray dst,、//输出图像
	IInputArray element,//输入处理的结构元素
	Point anchor,//结构元素的中心位置
	int iterations,//同Image类中迭代的次数
	BorderType borderType,//边界的模式
	MCvScalar borderValue//边界颜色
)
public static Mat GetStructuringElement(//用于得到上个函数IInputArray element
	ElementShape shape,
	Size ksize,
	Point anchor
)
public static void Erode(//腐蚀,基本同膨胀的类型
	IInputArray src,
	IOutputArray dst,
	IInputArray element,
	Point anchor,
	int iterations,
	BorderType borderType,
	MCvScalar borderValue
)

用起来用Image类比较简单,很快简单,无需很多参数。

图例如图,下面主要为腐蚀,膨胀也是类似。


 
 
 Emgu.CV.Image<Bgr, Byte> YUAN = new Image<Bgr, Byte>((Bitmap)pictureBox1.Image);
            // YUAN._Erode((int)numericUpDown1.Value);
            //  YUAN._Dilate((int)numericUpDown1.Value);
            Mat a1 = CvInvoke.GetStructuringElement(Emgu.CV.CvEnum.ElementShape.Rectangle, new Size(3, 3), new Point(-1, -1));
            Emgu.CV.Image<Bgr, Byte> chutu = new Image<Bgr, byte>(YUAN.Size);
            //  CvInvoke.Dilate(YUAN, chutu, a1, new Point(-1, -1), (int)numericUpDown1.Value, Emgu.CV.CvEnum.BorderType.Default, new MCvScalar(255, 255, 0));
            CvInvoke.Erode(YUAN, chutu, a1, new Point(-1, -1), (int)numericUpDown1.Value, Emgu.CV.CvEnum.BorderType.Default, new MCvScalar(0, 255,255));
            pictureBox2.Image = chutu.Bitmap;


猜你喜欢

转载自blog.csdn.net/tuto7534/article/details/80385005