腐蚀、膨胀
np.ones((3,3),np.uint8):
生成一个(3,3)的全是1数组,数据类型为np.uint8
腐蚀、膨胀原理
"""
腐蚀操作
膨胀
"""
import cv2
import matplotlib.pyplot as plt
import numpy as np
xuan_origin=cv2.imread('D:/BaiduNetdiskDownload/opencv/xuan.jpg')
pie_origin=cv2.imread('D:/BaiduNetdiskDownload/opencv/pie.jpg')
#腐蚀
kernel_1 = np.ones((3,3),np.uint8)
erosion = cv2.erode(xuan_origin,kernel_1,iterations=1)
kernel_2 = np.ones((20,20),np.uint8)
erosion_1 = cv2.erode(pie_origin,kernel_2,iterations=1)
erosion_2 = cv2.erode(pie_origin,kernel_2,iterations=2)
erosion_3 = cv2.erode(pie_origin,kernel_2,iterations=3)#反应3次
#膨胀
dilate = cv2.dilate(xuan_origin,kernel_1,iterations=1)
dilate_1 = cv2.dilate(pie_origin,kernel_2,iterations=1)
dilate_2 = cv2.dilate(pie_origin,kernel_2,iterations=2)
dilate_3 = cv2.dilate(pie_origin,kernel_2,iterations=3)
#输出结果
plt.subplot(441),plt.imshow(xuan_origin),plt.title('xuan')
plt.subplot(442),plt.imshow(erosion),plt.title('xuan11')
plt.subplot(445),plt.imshow(pie_origin),plt.title('pie')
plt.subplot(446),plt.imshow(erosion_1),plt.title('pie11')
plt.subplot(447),plt.imshow(erosion_2),plt.title('pie12')
plt.subplot(448),plt.imshow(erosion_3),plt.title('pie13')
plt.subplot(4,4,10),plt.imshow(dilate),plt.title('xuan21')
plt.subplot(4,4,14),plt.imshow(dilate_1),plt.title('pie21')
plt.subplot(4,4,15),plt.imshow(dilate_2),plt.title('pie22')
plt.subplot(4,4,16),plt.imshow(dilate_3),plt.title('pie23')
plt.show()
cv2.morphologyEx()的操作
开闭运算
开运算=先腐蚀,后膨胀
闭运算=先膨胀,后腐蚀
梯度运算
梯度=膨胀-腐蚀
礼帽与黑帽
礼帽=原始 - 开运算(可理解为留下瑕疵)
黑帽= 闭运算-原始输入(可理解为留下轮廓、焊点)
"""
开闭运算
开运算=先腐蚀,后膨胀
闭运算=先膨胀,后腐蚀
梯度运算
梯度=膨胀-腐蚀
礼帽与黑帽
礼帽=原始 - 开运算
黑帽= 闭运算-原始输入
"""
import cv2
import matplotlib.pyplot as plt
import numpy as np
xuan_origin=cv2.imread('D:/BaiduNetdiskDownload/opencv/xuan.jpg')
pie_origin=cv2.imread('D:/BaiduNetdiskDownload/opencv/pie.jpg')
kernel_1 = np.ones((3,3),np.uint8)
kernel_2 = np.ones((5,5),np.uint8)
#开运算,闭运算
opening=cv2.morphologyEx(xuan_origin,cv2.MORPH_OPEN,kernel_1)
closing=cv2.morphologyEx(xuan_origin,cv2.MORPH_CLOSE,kernel_1)
#梯度
tidu = cv2.morphologyEx(pie_origin,cv2.MORPH_GRADIENT,kernel_2)
#礼帽,黑帽
tophat =cv2.morphologyEx(xuan_origin,cv2.MORPH_TOPHAT,kernel_2)
blackhat =cv2.morphologyEx(xuan_origin,cv2.MORPH_BLACKHAT,kernel_2)
plt.subplot(331),plt.imshow(xuan_origin),plt.title('xuan')
plt.subplot(332),plt.imshow(opening),plt.title('OPEN')
plt.subplot(333),plt.imshow(closing),plt.title('CLOSE')
plt.subplot(334),plt.imshow(tidu),plt.title('TIDU')
plt.subplot(337),plt.imshow(tophat),plt.title('TOPHAT')
plt.subplot(338),plt.imshow(blackhat),plt.title('BLACKHAT')
plt.show()