MORPH_CLOSE:对图像进行闭运算。
下面我们还是以小猫图像为例显示一下对二值图像进行开运算和闭运算后得到的结果。
int main() { Mat image=imread("../cat.png"); // 彩色转灰度 cvtColor(image,image,CV_BGR2GRAY); // 阈值化 threshold(image,image,255*(0.5),255,THRESH_BINARY); // 定义结构元素 Mat se(5,5,CV_8U,Scalar(1)); Mat closed; morphologyEx(image,closed,MORPH_CLOSE,se); Mat opened; morphologyEx(image,opened,MORPH_OPEN,se); return 0; }
从图片中我们可以得出结论:
闭运算可以填充图像中的孔洞,连接一些缺口;开运算可以去除图像中一些较小的结构。前提是这些孔洞或碎片要与进行运算的结构元素尺度相当。
二、用形态学操作来检测边缘和角点
其实用形态学来检测边缘的原理非常简单,我们打开源码看它是怎么操作的: