版权声明:本文为博主原创文章,转载请注明原创链接! 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):结构元素锚点位置