
腐蚀的api:eroce(img,knernel,iterations=1)
img:需要腐蚀的图片
knernel:卷积核大小,卷积核越大腐蚀效果越明显
iterations:腐蚀次数
import cv2 import numpy as np # 导入一张图 img=cv2.imread('C:\\Users\\mk\\Desktop\\1.jpg') # 创建卷积核 kernel=np.ones((7,7),np.uint8) # 腐蚀图片 dst=cv2.erode(img,kernel=kernel,iterations=5) # 显示图片 cv2.imshow('img',img) cv2.imshow('dst',dst) cv2.waitKey(0)
膨胀运算
膨胀api:dilate(img,kernel,iterations=1)img:需要膨胀的图片
knernel:卷积核大小,卷积核越大膨胀效果越明显
iterations:膨胀次数
import cv2 import numpy as np # 导入一张图 img=cv2.imread('C:\\Users\\mk\\Desktop\\1.jpg') # 创建卷积核 kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(7,7)) # 膨胀图片 dst=cv2.dilate(img,kernel=kernel,iterations=1) # 显示图片 cv2.imshow('img',img) cv2.imshow('dst',dst) cv2.waitKey(0)
开运算
开运算=腐蚀+膨胀开运算需要2步,先腐蚀再膨胀,我们只需要调用开运算的api就可以一次完成。开运算最大的用处就是降噪。
开运算api:morphologyEx(img,MORPH_OPEN,kernel)
img:需要开运算的图片
MORPH_OPEN:代表形态学的一种开运算
kernel:卷积核,噪点大可以选择大点的卷积核
import cv2 import numpy as np # 导入一张图 img=cv2.imread('C:\\Users\\mk\\Desktop\\1.jpg') # 创建卷积核 kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5)) # 开运算 dst=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel) # 显示图片 cv2.imshow('img',img) cv2.imshow('dst',dst) cv2.waitKey(0)
闭运算
闭运算=膨胀+腐蚀闭运算主要解决的问题是,如果图片里边有很多的噪点,闭运算就可以将里边的噪点消除掉。
闭运算api:morphologyEx(img,MORPH_CL.OSE,kernel)
import cv2 import numpy as np # 导入一张图 img=cv2.imread('C:\\Users\\mk\\Desktop\\1.jpg') # 创建卷积核 kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5)) # 闭运算 dst=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel) # 显示图片 cv2.imshow('img',img) cv2.imshow('dst',dst) cv2.waitKey(0)
形态学梯度
梯度=原图-腐蚀梯度计算出的结果往往是一个图形的边缘。

梯度api:morphologyEx(img,MORPH_GRADIENT,kernel)
import cv2 import numpy as np # 导入一张图 img=cv2.imread('C:\\Users\\mk\\Desktop\\1.jpg') # 创建卷积核 kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(3,3)) # 梯度 dst=cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel) # 显示图片 cv2.imshow('img',img) cv2.imshow('dst',dst) cv2.waitKey(0)
顶帽运算
顶帽运算=原图-开运算顶帽运算的作用:假如原图中有一个大的物体和一些小的物体,想要得到小的物体,即可使用顶帽运算。
顶帽运算api:morphologyEx(img,MORPH_TOPHAT,kernel)
import cv2 import numpy as np # 导入一张图 img=cv2.imread('C:\\Users\\mk\\Desktop\\1.jpg') # 创建卷积核 kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(13,13)) # 顶帽运算 dst=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel) # 显示图片 cv2.imshow('img',img) cv2.imshow('dst',dst) cv2.waitKey(0)
黑帽运算
黑帽运算=原图-闭运算黑帽运算的主要作用是将大图片内的小噪点找出来。

黑帽运算api:morphologyEx(img,MORPH_BLACKHAT,kernel)
import cv2 import numpy as np # 导入一张图 img=cv2.imread('C:\\Users\\mk\\Desktop\\1.jpg') # 创建卷积核 kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(13,13)) # 黑帽运算 dst=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel) # 显示图片 cv2.imshow('img',img) cv2.imshow('dst',dst) cv2.waitKey(0)