一般形态学操作会有两步:
Mat kernel = getStructuringElement(MORPH_RECT, Size(3,3), Point(-1,-1));
morphologyEx(src, dst, MORPH_OPEN, kernel, Point(-1,-1))
1、其中第一步用于构造一个结构元素,也就是在第二步需要用到的核
使用getStructuringElement()函数就是构造一个特定形状及大小的结构元素
cv::Mat cv::getStructuringElement(int shape,cv::Size ksize,cv::Point anchor=cv::Point(-1,-1))
括号里第一个参数---设置结构元素的形状
MORPH_RECT(矩形), MORPH_ELLIPSE(椭圆), MORPH_CROSS(十字形)
括号里第二个参数---设置结构元素的大小也就是尺寸
括号里第三个参数---设置结构元素的锚点位置,一般为中心点Point(-1,-1)
2、morphologyEx()函数对图像进行形态学操作即膨胀腐蚀操作。
第一个参数:原图像
第二个参数:目标图像
第三个参数:操作类型
第四个参数:结构元素
第五个参数:锚点
其中第三个参数常用的有:
(1)MORPH_ERODE=0;//腐蚀,与erode腐蚀效果一样
(2)MORPH_DILATE=1;//膨胀,与dilate膨胀效果一样
(3)MORPH_OPEN=2;//开操作:先腐蚀后膨胀(去除一些小的无关或无意义点)
(4)MORPH_CLOSE=3;//闭操作:先膨胀后腐蚀(填补空洞点即去除目标区域噪点)
(5)MORPH_GRADIENT=4;//梯度操作