erode腐蚀函数

版权声明:本文为博主原创文章,转载请注明原创链接! https://blog.csdn.net/qq_34706280/article/details/79300503
void cv::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:
需要进行腐蚀的原始图像,该图像的通道数可以是任意的,但是要求图像深度为以下几种之一:
CV_8U、CV_16U、CV_16S、CV_32F、CV_64F
OutputArray dst:
被腐蚀后输出的目标图像,该图像与src具有相同的类型和大小
InputArray kernel:
腐蚀操作时所采用的结构类型,通过函数getStructuringElement()函数生成
Point anchor = Point(-1, -1):结构中锚点的位置,默认(-1,-1),即核的中心位置
int iterations = 1:腐蚀操作的迭代数,默认值为1,即进行1次腐蚀
int borderType = BORDER_CONSTANT:图像边界处理的一宗方法
borderType 定义如下:
enum BorderTypes 
{  
    BORDER_CONSTANT    = 0, //!< `iiiiii|abcdefgh|iiiiiii`  with some specified `i`  
    BORDER_REPLICATE   = 1, //!< `aaaaaa|abcdefgh|hhhhhhh`  
    BORDER_REFLECT     = 2, //!< `fedcba|abcdefgh|hgfedcb`  
    BORDER_WRAP        = 3, //!< `cdefgh|abcdefgh|abcdefg`  
    BORDER_REFLECT_101 = 4, //!< `gfedcb|abcdefgh|gfedcba`  
    BORDER_TRANSPARENT = 5, //!< `uvwxyz|absdefgh|ijklmno`  

    BORDER_REFLECT101  = BORDER_REFLECT_101, //!< same as BORDER_REFLECT_101  
    BORDER_DEFAULT     = BORDER_REFLECT_101, //!< same as BORDER_REFLECT_101  
    BORDER_ISOLATED    = 16 //!< do not look outside of ROI  
};  
const Scalar& borderValue = morphologyDefaultBorderValue():边界值
一般采用morphologyDefaultBorderValue()用来返回腐蚀和膨胀的边界值。

参数kernel使用getStructuringElement()函数得到

Mat cv::getStructuringElement
(
    int shape,
    Size ksize,
    Point anchor = Point(-1, -1)
);
int shape:元素形状类型
enum MorphShapes
{
    MORPH_RECT,   //矩形结构
    MORPH_CROSS,  //十字星形结构
    MORPH_ELLIPSE //椭圆形结构元素
};
Size ksize:结构元素的大小
Point anchor = Point(-1, -1):结构元素锚点位置

猜你喜欢

转载自blog.csdn.net/qq_34706280/article/details/79300503