圖像的腐蝕和膨脹其實是利用卷積進行計算,首先導包:spa
import numpy as np import cv2 import matplotlib.pyplot as plt def show(image): plt.imshow(image) plt.axis('off') plt.show() def imread(image): image=cv2.imread(image) image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB) return image
而後生成一個正方形的核:code
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5)) print(kernel)
輸出:blog
[[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]]
固然咱們做運算的時候都是使用的正方形的核,這裏也展現下生成橢圓核的方法:圖片
kernel=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(10,10))#這裏生成的是橢圓 print(kernel)
生成十字形的核:get
kernel=cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))#這裏生成的是十字形 print(kernel)
利用卷積進行圖像的腐蝕:能夠使黑色的點變大it
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(10,10)) ero=cv2.erode(image,kernel) show(ero)
循環進行屢次腐蝕:io
show(image) kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(10,10)) for i in range(2): ero=cv2.erode(image,kernel,iterations=i+1) show(ero)
圖像的膨脹,使白色的點變大,用於去除圖像當中的黑點:class
show(image)#利用卷積將圖像進行膨脹,求解的是區域最大值,腐蝕則是求解的區域最小值 dilation=cv2.dilate(image,kernel) show(dilation)#用於去除圖像當中黑色的小點
循環去除:import
image=imread('123.jpg') show(image) kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(21,21)) for i in range(3): ero=cv2.erode(image,kernel,iterations=i+1) show(dilation)
下面是處理朱茵圖片進行膨脹的效果:循環