《OpenCV》五、图片腐蚀、膨胀与模糊
2021-10-11 本文已影响0人
GoodTekken
开运算是先腐蚀(erode)后膨胀(dilate)的过程,可以消除图像上细小的噪声,并平滑物体的边界。
闭运算是先膨胀(dilate)后腐蚀(erode)的过程,可以填充物体内细小的空洞,并平滑物体边界。
1,图片腐蚀(erode)
提取每一个位置的矩形邻域内值的最小值作为该位置输出灰度值.

使用方法:
erode(src, dst, getStructuringElement(MORPH_RECT, Size(15, 15)));
2,图片膨胀(ditate)
提取每一个位置的矩形邻域内值的最大值作为该位置输出灰度值.

使用方法:
dilate(src, dst, getStructuringElement(MORPH_RECT, Size(15, 15)));
3,图片模糊(blur)
blur()函数定义:
void blur( InputArray src,
OutputArray dst,
Size ksize,
Point anchor = Point(-1,-1),
int borderType = BORDER_DEFAULT
);
borderTypes 取值范围:
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|abcdefgh|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
};

使用方法:
blur(src, dst_opencv, Size(3, 3), Point(-1, -1), BORDER_DEFAULT);