C#调用OpenCvSharp实现图像的开运算和闭运算

对图像同时进行腐蚀和膨胀操作,顺序不同则效果也不同。先腐蚀后膨胀为开运算,能够消除小斑点和细小的突出物、平滑图像以及改善边缘;先膨胀后腐蚀为闭运算,能够去除噪点、填补图像孔洞、连接邻近物体和平滑物体边界。
  OpenCvSharp中调用Cv2.MorphologyEx函数执行开运算、闭运算操作(函数原型见下方),其主要参数意义如下:
  1)src:源图像,可以输入Mat类型实例;
  2)dst:腐蚀或膨胀函数的处理结果,可以用Mat类型;
  3)op:指定形态学操作,MorphTypes类型,支持膨胀、腐蚀、开运算、闭运算等八种操作;
  4)element:核矩形,可以使用getStructuringElement函数创建,也可以使用Mat.Ones函数创建,可以是矩形,也可以是十字形、椭圆形等形状;
  5)anchor :核矩形的中心位置,默认值为(-1, -1),也即矩形的中心;
  6)iterations:操作执行次数,默认为1次。

csharp 复制代码
public static void MorphologyEx(InputArray src, OutputArray dst, MorphTypes op, InputArray? element, Point? anchor = null, int iterations = 1, BorderTypes borderType = BorderTypes.Constant, Scalar? borderValue = null)

最后是使用示例及图像处理效果,示例图形左侧为原图,右侧为处理后的图形,对比圈红出的内容即可看出两种不同操作的效果。

csharp 复制代码
int iterations = Convert.ToInt32(textBox1.Text);
using Mat imgSrc = Cv2.ImRead(lblMsg.Text);

using Mat kernalMat = Mat.Ones(Convert.ToInt32(textBox2.Text), Convert.ToInt32(textBox2.Text),MatType.CV_8UC1);
using Mat imgDest = new Mat(imgSrc.Size(), imgSrc.Type());
Cv2.MorphologyEx(imgSrc, imgDest, MorphTypes.Open, kernalMat, null, iterations);

Cv2.ImShow("开运算操作", imgDest);
csharp 复制代码
int iterations = Convert.ToInt32(textBox1.Text);
using Mat imgSrc = Cv2.ImRead(lblMsg.Text);

using Mat kernalMat = Mat.Ones(Convert.ToInt32(textBox2.Text), Convert.ToInt32(textBox2.Text), MatType.CV_8UC1);
using Mat imgDest = new Mat(imgSrc.Size(), imgSrc.Type());
Cv2.MorphologyEx(imgSrc, imgDest, MorphTypes.Close, kernalMat, null, iterations);

Cv2.ImShow("闭运算操作", imgDest);

参考文献:

[1]https://github.com/shimat/opencvsharp

[2]https://opencv.org/

[3]https://github.com/opencv/opencv

[4]https://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/opening_closing_hats/opening_closing_hats.html

相关推荐
pchmi11 天前
C# OpenCV机器视觉:模仿Halcon各向异性扩散滤波
人工智能·opencv·计算机视觉·c#·机器视觉·opencvsharp
pchmi11 天前
C# OpenCV机器视觉:对位贴合
人工智能·opencv·c#·机器视觉·opencvsharp
pchmi11 天前
C# OpenCV机器视觉:SoftNMS非极大值抑制
人工智能·opencv·c#·机器视觉·opencvsharp
pchmi12 天前
C# OpenCV机器视觉:OSTU算法实现背景差分的自适应分割
人工智能·opencv·算法·c#·机器视觉·opencvsharp
pchmi14 天前
C# OpenCV机器视觉:多尺度细节提升
人工智能·opencv·c#·机器视觉·opencvsharp
pchmi16 天前
C# OpenCV机器视觉:利用TrashNet实现垃圾分类
人工智能·深度学习·opencv·计算机视觉·c#·opencvsharp
pchmi24 天前
C# OpenCV机器视觉:图像去雾
人工智能·opencv·计算机视觉·c#·opencvsharp
pchmi1 个月前
C# OpenCV机器视觉:利用CNN实现快速模板匹配
人工智能·opencv·cnn·c#·机器视觉·opencvsharp
pchmi1 个月前
C# OpenCV机器视觉:车道检测
人工智能·opencv·目标检测·计算机视觉·c#·opencvsharp
pchmi1 个月前
C# OpenCV机器视觉:实现农作物病害检测
人工智能·opencv·c#·机器视觉·opencvsharp