图像形态学处理
一、形态学-腐蚀操作
img = cv2.imread('dige.png')
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220303221324102-717515110.png)
kernel = np.ones((3,3),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 1)
cv2.imshow('erosion', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220303221332958-1845473439.png)
pie = cv2.imread('pie.png')
cv2.imshow('pie', pie)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220303221343582-1985711489.png)
kernel = np.ones((30,30),np.uint8)
erosion_1 = cv2.erode(pie,kernel,iterations = 1)
erosion_2 = cv2.erode(pie,kernel,iterations = 2)
erosion_3 = cv2.erode(pie,kernel,iterations = 3)
res = np.hstack((erosion_1,erosion_2,erosion_3))
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220303221351572-1045577706.png)
二、形态学-膨胀操作
img = cv2.imread('dige.png')
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220303221358783-1533337510.png)
kernel = np.ones((3,3),np.uint8)
dige_erosion = cv2.erode(img,kernel,iterations = 1)
cv2.imshow('erosion', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220303221410246-516773458.png)
kernel = np.ones((3,3),np.uint8)
dige_dilate = cv2.dilate(dige_erosion,kernel,iterations = 1)
cv2.imshow('dilate', dige_dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220303221418664-565285524.png)
pie = cv2.imread('pie.png')
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220303221430809-1761750895.png)
pie = cv2.imread('pie.png')
kernel = np.ones((30,30),np.uint8)
dilate_1 = cv2.dilate(pie,kernel,iterations = 1)
dilate_2 = cv2.dilate(pie,kernel,iterations = 2)
dilate_3 = cv2.dilate(pie,kernel,iterations = 3)
res = np.hstack((dilate_1,dilate_2,dilate_3))
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220303221437906-1250746300.png)
三、开运算与闭运算
# 开:先腐蚀,再膨胀
img = cv2.imread('dige.png')
kernel = np.ones((5,5),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.imshow('opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220303221446426-1249786404.png)
# 闭:先膨胀,再腐蚀
img = cv2.imread('dige.png')
kernel = np.ones((5,5),np.uint8)
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
cv2.imshow('closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220303221454819-1626094726.png)
四、梯度运算
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220304085327871-1298739470.png)
# 梯度=膨胀-腐蚀
pie = cv2.imread('pie.png')
kernel = np.ones((7,7),np.uint8)
dilate = cv2.dilate(pie,kernel,iterations = 5)
erosion = cv2.erode(pie,kernel,iterations = 5)
res = np.hstack((dilate,erosion))
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220304085345025-1628014187.png)
gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel)
cv2.imshow('gradient', gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220304085354026-570334411.png)
五、礼帽与黑帽
- 礼帽 = 原始输入-开运算结果
- 黑帽 = 闭运算-原始输入
#礼帽
img = cv2.imread('dige.png')
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('tophat', tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220304085424726-630760434.png)
#黑帽
img = cv2.imread('dige.png')
blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('blackhat ', blackhat )
cv2.waitKey(0)
cv2.destroyAllWindows()
![](https://img2022.cnblogs.com/blog/2745680/202203/2745680-20220304085433265-185907913.png)