opencv初学(图像06)

腐蚀、膨胀

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()

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值