图像的膨胀与腐蚀是形态学技术里最基本的操作,相关的定义和实现原理请大家参见帖子:http://blog.csdn.net/poem_qianmo/article/details/23710721 OpenCV提供了函数dilate和函数erode实现图像的膨胀与腐蚀操作,下面分别介绍相关函数并给出示例代码。getStructuringElement函数:这个函数用于返回指定大小和形状的形态学操作运算单元,函数dilate和函数erode的使用都建立在其基础之上。原型如下: C++: Mat getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1))参数意义:shape:形态学操作运算单元的形状,有如下可能的取值: MORPH_RECT-矩形 MORPH_ELLIPSE-椭圆 MORPH_CROSS-十字形ksize:运算单元大小anchor:锚点。具体的含义见帖子thread-177-1-1.html中对锚点的描述。dilate函数: 这个函数用于进行膨胀操作,使用非常简单,大家看示例代码便知,这里就不再对其参数作介绍了。erode函数: 这个函数用于进行腐蚀操作,使用非常简单,大家看示例代码便知,这里就不再对其参数作介绍了。示例代码如下: 代码中用到的图像下载链接:https://pan.baidu.com/s/1jIaOAQ6 密码:1txy
//opencv版本:OpenCV3.0 //VS版本:VS2013 #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/imgproc/types_c.h> #include <opencv2/highgui/highgui.hpp> #include <opencv2/highgui/highgui_c.h> #include <iostream> using namespace cv; using namespace std; int main() { //载入原图 Mat image = imread("banner.jpg"); //显示原图 imshow("【原图】", image); //获取自定义核 Mat element = getStructuringElement(MORPH_RECT, Size(3, 3)); Mat out1,out2; //进行膨胀操作 dilate(image, out1, element); //进行腐蚀操作 erode(image, out2, element); //显示效果图 imshow("【效果图】膨胀操作", out1); imshow("【效果图】腐蚀操作", out2); waitKey(0); return 0; }运行结果截图如下: