Opencv 开运算,闭运算、膨胀、腐蚀。
开运算=先腐蚀运算,再膨胀运算
![](https://i-blog.csdnimg.cn/blog_migrate/b6593fc9bf7e7daf63d73411d237af26.png)
Cv2.MorphologyEx(src, dst, MorphTypes.Open, element, null, iterations);
闭运算=先腐蚀运算,再膨胀运算
![](https://i-blog.csdnimg.cn/blog_migrate/462d650e3a124d6553e37228f0ea2ac7.png)
C#使用Opnecv进行形态学处理
var Src_Images = ImageBase.Imread("1.bmp", 1);
var dstimage = new Mat();
Cv2.Threshold(Src_Images, dstimage, 100, 255, ThresholdTypes.Binary);
var Rectangle = Cv2.GetStructuringElement(MorphShapes.Rect, new Size(5, 5), new Point(-1, -1));
var Cross = Cv2.GetStructuringElement(MorphShapes.Cross, new Size(5, 5), new Point(-1, -1));
var Ellipse = Cv2.GetStructuringElement(MorphShapes.Ellipse, new Size(5, 5), new Point(-1, -1));
//矩形开运算 1为迭代次数
Cv2.MorphologyEx(Src_Images, dstimage,MorphTypes.Open, Rectangle, null, 1);
//矩形闭运算
Cv2.MorphologyEx(Src_Images, dstimage, MorphTypes.Close, Rectangle, null, 1);
//矩形膨胀
Cv2.MorphologyEx(Src_Images, dstimage, MorphTypes.Dilate, Rectangle, null, 1);
//矩形腐蚀
Cv2.MorphologyEx(Src_Images, dstimage, MorphTypes.Erode, Rectangle, null, 1);
//椭圆近似圆开运算 1为迭代次数
Cv2.MorphologyEx(Src_Images, dstimage, MorphTypes.Open, Ellipse, null, 1);
//椭圆近似圆闭运算
Cv2.MorphologyEx(Src_Images, dstimage, MorphTypes.Close, Ellipse, null, 1);
//椭圆近似圆膨胀
Cv2.MorphologyEx(Src_Images, dstimage, MorphTypes.Dilate, Ellipse, null, 1);
//椭圆近似圆腐蚀
Cv2.MorphologyEx(Src_Images, dstimage, MorphTypes.Erode, Ellipse, null, 1);
//显示图片
Cv2.ImShow("1", dstimage);