腐蚀:前景物边界腐蚀,卷积核对应的原图像所有像素值为都是1那中心元素保持原来像素值,否则置零
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('E:/python/sunflower.png',0)
kernel=np.ones((5,5),np.uint8)
dst=cv2.erode(img,kernel,iterations=7)
plt.subplot(121),plt.imshow(img,'gray')
plt.subplot(122),plt.imshow(dst,'gray')
膨胀:前景物边界膨胀,卷积核对应的原图像所有像素值为有1那中心元素保持原来像素值,否则置零,增加白色区域
dst=cv2.dilate(img,kernel,iterations=1)
dst=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
闭运算:先膨胀再腐蚀,可以填充孔洞或者小黑点
dst=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
dst=cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
dst=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
dst=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)
结构化元素
A=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
print(A)
[[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]]
A=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
print(A)
[[0 0 1 0 0]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[0 0 1 0 0]]
A=cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))
print(A)
[[0 0 1 0 0]
[0 0 1 0 0]
[1 1 1 1 1]
[0 0 1 0 0]
[0 0 1 0 0]]