先上代码
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/video.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
//载入原图
Mat image = imread("700levi.jpg");
//创建窗口
namedWindow("原图");
//显示原图
imshow("原图", image);
/****************膨胀****************/
namedWindow("膨胀操作");
//获取自定义核
Mat element1 = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat out1;
//膨胀操作
dilate(image, out1, element1);
//显示效果图
imshow("膨胀操作", out1);
/****************腐蚀****************/
namedWindow("腐蚀操作");
//获取自定义核
Mat element2 = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat out2;
//腐蚀操作
erode(image, out2, element2);
//显示效果图
imshow("腐蚀操作", out2);
waitKey(0);
return 0;
}
效果图
函数解析
膨胀函数-dilate
腐蚀函数-erode
补充:
1.膨胀和腐蚀是最基本的形态学操作
2.膨胀和腐蚀是对白色部分(高亮部分)而言的,不是黑色部分.膨胀是图像中的高亮部分进行膨胀,类似于"领域扩张",效果图拥有比原图更大的高亮区域;腐蚀是原图中的高亮部分被腐蚀,类似于"领域被蚕食",效果图拥有比原图更小的高亮区域.