图像膨胀的原理是将一个结构元素(也称为核或模板)在图像上滑动,并将其与图像中对应位置的像素进行比较。如果结构元素的所有像素与图像中对应位置的像素都匹配,那么该位置的像素值保持不变。如果结构元素的任何一个像素与图像中对应位置的像素不匹配,那么 图像中对应位置的像素被置为1,从而改变了图像的形状和结构。

Mat cv::getStructuringElement ( int shape,
Size ksize,
Point anchor = point(-1,-1)
)
其中结构元素的种类有:

void cv::dilate ( InputArray src,
OutputArray dst,
InputArray kernel,
Point anchor = point(-1,-1),
int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar & borderValue = morphologyDefaultBorderValue()
)
- //图像膨胀
- void image_dilate(Mat image){
- Mat gray;
- cvtColor(image,gray,COLOR_BGR2GRAY);//灰度化
- Mat dilate_black1,dilate_black2;
- //黑背景图像膨胀
- Mat struct1= getStructuringElement(0,Size(3,3));//矩形结构元素
- Mat struct2= getStructuringElement(1,Size(3,3));//十字结构元素
-
- dilate(gray,dilate_black1,struct1);//膨胀
- dilate(gray,dilate_black2,struct2);
-
- }