//名称:膨胀
//日期: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;
}
![]()
膨胀操作【原图】 膨胀操作【效果图】