python环境下使用膨胀和腐蚀处理图片的方法
1、在OpenCV里有一个getStructuringElement函数专门完成膨胀腐蚀核的初始化。有了这个就是十分方便。
我的理解是:
一般地,膨胀腐蚀大多针对二值图像。
因此,膨胀就是把白色区域扩大,消除黑色小块或空洞;
腐蚀就是把白色区域缩小,消除白色小块,扩大黑色区域
getStructuringElement参数有三种类型:
第一个参数: 0:矩形 1:十字交叉形 2: 椭圆。 其中 矩形全填充1.
第二个参数: 核的大小 一般 3,3 5,5 都可以


2、import numpy as np
import cv2 as cv
import copy
image = cv.imread('c:\\haitun.png')
cv.imshow("image", image)
本例采用海豚图示例。

3、转变成灰度
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
cv.imshow("gray", gray)

4、ret, thresholdImg = cv.threshold(gray, 100, 255, cv.THRESH_BINARY)
cv.imshow("thresholdImg ", thresholdImg )
使用阈值方法转换成二值图

5、使用getStructuringElement定义核, 参数MORPH_RECT矩形, 5※5大小
kernel = cv.getStructuringElement(cv.MORPH_RECT,(5, 5))
print(kernel)

6、#腐蚀图像
erodImg = cv.erode(thresholdImg, kernel)
#显示腐蚀后的图像
cv.imshow("erodImg", erodImg);
腐蚀白色区域,黑色区域扩大。

7、#膨胀图像
dilateImg = cv.dilate(thresholdImg, kernel)
#显示膨胀后的图像
cv.imshow("dilateImg", dilateImg);
膨胀白色区域,白色区域扩大。黑色变少

8、从上面dilateImg和 erodImg可以明显看出不同,这性质在图像处理中很有用。
我们修改一下getStructuringElement的参数为cv.MORPH_CROSS
大小还是5x5
看效果.

