OpenCV之图像腐蚀:erode()函数(C++实现)

dilate函数是使用像素邻域内的局部极小运算符来腐蚀图像。

函数原型:

void erode(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1, -1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue());

参数详解:

  • 第一个参数:InputArray类型的src,输入图像,Mat类的对象即可。图像的通道数可以是任意的,但是图像的深度应该是CV_8U,CV_16U,CV_16S,CV_32F,CV_64F之一。
  • 第二个参数:OutputArray类型的dst,目标图像,需要和输入图像有一样的尺寸和类型。
  • 第三个参数:InputArray类型的kernel,腐蚀操作的核。当为NULL时,表示的是使用的是参考点位于中心3*3的核。
  • 第四个参数:Point类型的anchor,锚点的位置,默认值是 (-1, -1),表示位于中心。
  • 第五个参数:int类型的iterations,迭代的次数,默认值是1。
  • 第六个参数:int类型的borderType,用于推断图像外部像素的某种边界模式,默认值是BORDER_DEFAULT。
  • 第七个参数:const Scalar&类型的borderValue,一般不管它。

一般只需要传入前三个参数,后面的四个参数 有默认值。

代码示例:

#include 
#include 
#include 
#include 

using namespace std;
using namespace cv;
int main() {
    Mat srcImage;
    srcImage = imread("/Users/dwz/Desktop/cpp/1.jpg");

    Mat element;
    element = getStructuringElement(MORPH_RECT, Size(5, 5));

    Mat dstImage;
    erode(srcImage, dstImage, element);
    imwrite("erode.jpg", dstImage);
    return 0;
}

输入:

OpenCV之图像腐蚀:erode()函数(C++实现)_第1张图片

输出:

OpenCV之图像腐蚀:erode()函数(C++实现)_第2张图片

二值图输入:

OpenCV之图像腐蚀:erode()函数(C++实现)_第3张图片

输出:

OpenCV之图像腐蚀:erode()函数(C++实现)_第4张图片

可以发现白色区域变小了

你可能感兴趣的:(C++,opencv,图像处理,opencv,计算机视觉,c++)