import cv2
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
1 形态学-腐蚀操作
img = cv2.imread("dige.png")
cv_show("img",img)
plt.imshow(img)
<matplotlib.image.AxesImage at 0x1d96cb6f0b8>

kernel = np.ones((3,3),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 1)
cv_show("erosion",erosion)
plt.imshow(erosion)
<matplotlib.image.AxesImage at 0x1d96cdb6ef0>

pie = cv2.imread("pie.png")
cv_show("pie",pie)
plt.imshow(pie)
<matplotlib.image.AxesImage at 0x1d96cce5048>

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()
plt.imshow(res)
<matplotlib.image.AxesImage at 0x1d96cf81d30>

2 形态学-膨胀操作
img = cv2.imread("dige.png")
cv_show("image",img)
plt.imshow(img)
<matplotlib.image.AxesImage at 0x1d964a398d0>

kernel = np.ones((3,3),np.uint8)
dige_erosion = cv2.erode(img,kernel,iterations = 1)
cv_show("erosion",dige_erosion)
plt.imshow(dige_erosion)
<matplotlib.image.AxesImage at 0x1d96d12ec88>

kernel = np.ones((3,3),np.uint8)
dige_dilate = cv2.dilate(dige_erosion,kernel,iterations = 1)
cv_show("dilate",dige_dilate)
plt.imshow(dige_dilate)
<matplotlib.image.AxesImage at 0x1d96d37a208>

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))
cv_show("res",res)
plt.imshow(res)
<matplotlib.image.AxesImage at 0x1d970afea20>

3 开运算与闭运算
img = cv2.imread("dige.png")
kernel = np.ones((5,5),np.uint8)
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
cv_show("opening",opening)
plt.imshow(opening)
<matplotlib.image.AxesImage at 0x1d96cbcf518>

img = cv2.imread("dige.png")
kernel = np.ones((5,5),np.uint8)
closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
cv_show("closing",closing)
plt.imshow(closing)
<matplotlib.image.AxesImage at 0x1d96ca07320>

4 梯度运算
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))
cv_show("res",res)
plt.imshow(res)
<matplotlib.image.AxesImage at 0x1d964b96cc0>

gradient = cv2.morphologyEx(pie,cv2.MORPH_GRADIENT,kernel)
cv_show("gradient",gradient)
plt.imshow(gradient)
<matplotlib.image.AxesImage at 0x1d96caf6a90>

5 礼帽与黑帽
- 礼帽 = 原始输入-开运算结果
- 黑帽 = 闭运算-原始输入
img = cv2.imread("dige.png")
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv_show("tophat",tophat)
plt.imshow(tophat)
<matplotlib.image.AxesImage at 0x1d96ceb8cc0>

img = cv2.imread("dige.png")
blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, kernel)
cv_show("blackhat",blackhat)
plt.imshow(blackhat)
<matplotlib.image.AxesImage at 0x1d96cc4d630>
