当前位置: 欣欣网 > 码农

C# OpenCvSharp 形态学处理效果

2024-05-08码农

1、腐蚀

腐蚀操作可以让图像沿着自己的边界向内收缩。

2、膨胀

膨胀操作与腐蚀操作正好相反,让图像沿着自己的边界向外扩张。

3、开运算

开运算就是先腐蚀再膨胀,可以用来抹除图像外部的细节或者噪音。

4、闭运算

闭运算就是先膨胀再腐蚀,可以用来抹除图像内部的细节或者噪音。

5、梯度运算

梯度运算的过程是让原图的膨胀图像减去原图的腐蚀图像,因为膨胀图比原图大,腐蚀图比原图小,利用腐蚀图将膨胀图像掏空,就得到了原图的轮廓图像。

6、顶帽运算

顶帽运算就是让原图减去原图的开运算图像,开运算会抹除图像的外部细节,「有外部细节」的图像减去「无外部细节」的图像,得到的结果就只剩外部细节了。

7、黑帽运算

黑帽运算就是让原图的闭运算图像减去原图,闭运算会抹除图像的内部细节,「无外部细节」的图像减去「有内部细节」的图像,得到的结果就剩内部细节了。

代码

Mat src = Cv2.ImRead("test.jpg");
Mat element = Cv2.GetStructuringElement(MorphShapes.Rect, new OpenCvSharp.Size(3, 3));
Mat dst = new Mat();
// 腐蚀
Mat erodedImage = new Mat();
Cv2.Erode(src, erodedImage, element);
// 膨胀
Mat dilatedImage = new Mat();
Cv2.Dilate(src, dilatedImage, element);
// 开运算
Cv2.MorphologyEx(src, dst, MorphTypes.Open, element);
// 闭运算
Cv2.MorphologyEx(src, dst, MorphTypes.Close, element);
// 顶帽运算
Cv2.MorphologyEx(src, dst, MorphTypes.TopHat, element);
// 黑帽运算
Cv2.MorphologyEx(src, dst, MorphTypes.BlackHat, element);
// 梯度运算
Cv2.MorphologyEx(src, dst, MorphTypes.Gradient, element);