腐蚀和膨胀是最基本的形态学运算。
腐蚀和膨胀是针对白色部分(高亮部分)而言的。
膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域;腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域。
膨胀就是求局部最大值的操作,从图像直观看来,就是将图像光亮部分放大,黑暗部分缩小。
闭运算是先膨胀后腐蚀的过程,其功能是用来填充物体内细小空洞、 闭操作可以消弭狭窄的间断,消除小的孔洞。 同时不明显改变不明显改变其面积。
先腐蚀后膨胀的过程就称为开运算。开操作可以平滑物体轮廓,断开狭窄的间断和消除细小的突出物。
孔洞指的是黑的,突出物和小物体指的是白的
#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread(路径名);
namedWindow("原始图", WINDOW_NORMAL);
imshow("原始图", img);
Mat out;
//获取自定义核
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形(MORRPH_ELLIPSE)、交叉型(MORPH_CROSS)的
//膨胀操作
dilate(img, out1, element);
//腐蚀操作
erode(img,out2,element);
//闭运算
morphologyEx(img,closedImg,CV_MOP_CLOSE,element);
//开运算
morphologyEx(img,openImg,CV_MOP_OPEN,element);
namedWindow("处理后", WINDOW_NORMAL);
imshow("处理后", out);
waitKey(0);
}