开运算:先腐蚀后膨胀,作用是移除场景中较小的物体,因为它们无法完全包含结构元素。
闭运算:先膨胀后腐蚀,作用是填充较亮物体中小洞,同时连接多个相邻物体,基本上,无法完全包含结构元素的洞或缝隙将被移除。
形态学梯度:膨胀图减去腐蚀图,得到物体轮廓
#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
Mat img;
img=imread("C://Users//huashuo111//Desktop//毛笔字.jpg");
namedWindow("原图",1);
imshow("原图",img);
Mat img1;
Mat element;
int s=5;
element=getStructuringElement(MORPH_RECT,Size(s,s));
morphologyEx(img,img1,MORPH_OPEN,element);
Mat img2;
morphologyEx(img,img2,MORPH_CLOSE,element);
imshow("开运算",img1);
imshow("闭运算",img2);
Mat img3;
morphologyEx(img,img3,MORPH_GRADIENT,element);
imshow("形态学梯度",img3);
imwrite("C://Users//huashuo111//Desktop//开运算.jpg",img1);
imwrite("C://Users//huashuo111//Desktop//闭运算.jpg",img2);
imwrite("C://Users//huashuo111//Desktop//形态学梯度.jpg",img3);
waitKey();
return 0;
}
原图:
开运算:
小黑点被连接到母体上了
闭运算:
小黑点变浅了
形态学梯度:
出现轮廓。
本文通过一个具体的示例详细介绍了图像处理中的三种基本形态学运算——开运算、闭运算及形态学梯度,并提供了对应的OpenCV代码实现。这些运算主要用于去除噪声、填充孔洞以及获取图像轮廓。

8838

被折叠的 条评论
为什么被折叠?



