//名称:膨胀 //日期:12月21日 //平台:QT5.7.1+opencv3.2.0 /* 膨胀(dilate)的含义: 膨胀就是求局部最大值的操作,就是将图像(或图像的一部分,A)与核 B 进行卷积 膨胀是对白色部分(高亮部分)而言的,不是黑色部分。 膨胀将图像中的高亮部分进行膨胀,类似于“领域扩张”,效果图拥有比原图更大的高亮区域 */ /*膨胀核心API函数: 函数原型: void dilate(InputArray src,OutputArray dst,InputArray kernel, Point anchor=Point(-1,-1),int iterations=1, int borderType = BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() ); 参数详解: InputArray src-----输入图像 OutputArray dst------目标图像,需要和源图片有一样的尺寸和类型 InputArray kernel------膨胀操作的核,为NULL时,表示使用参考点位于中心3x3的核 Point anchor---Point类型的anchor,锚的位置,默认值(-1,,1),表示锚位于中心 int borderType---用于推断图像外部像素的某种边界模式,有默认BORDER_CONSTANT 最后一个参数一般不用去管它。 */ /*注: 使用dilate函数,一般只需要填前面三个参数,后面四个参数有默认值 结合getStructuringElement函数,该函数参数有: 第一个参数:表示内核的形状(MORPH_RECT:矩形 MORPH_CROSS:圆形 MORPH_ ELLIPSE:椭圆形) 第二个参数:表示内核的尺寸 (形如:Size(15,15)) 第三个参数:锚点的位置 (默认值(-1,,1)) */ /*********新建QT控制台程序 ***********/ #include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> using namespace std; using namespace cv; int main() { Mat srcImage = imread("/home/ttwang/Valley_logo.jpg");//读入原图 namedWindow("膨胀操作[原图]"); namedWindow("膨胀操作[效果图]"); imshow("膨胀操作[原图]",srcImage); //获取自定义核 Mat element = getStructuringElement(MORPH_RECT,Size(15,15)); Mat dstImage; //进行膨胀操作 dilate(srcImage,dstImage,element); //显示效果图 imshow("膨胀操作[效果图]",dstImage); waitKey(0); return 0; }
膨胀操作【原图】 膨胀操作【效果图】