python+opencv形态学处理学习记录
#形态学处理
#腐蚀(腐蚀可以使目标区域范围“变小”,其实质造成图像的边界收缩,可以用来消除小且无意义的目标物。)
def corrode(gray):
kernel = np.ones((5, 5), np.uint8) # 卷积核/结构元素(getStructuringElement函数也可以构造)
corrode = cv2.erode(gray, kernel, iterations=1) # 腐蚀(iterations:迭代次数)
return corrode
#膨胀(膨胀会使目标区域范围“变大”,将于目标区域接触的背景点合并到该目标物中,使目标边界向外部扩张。
#作用就是可以用来填补目标区域中某些空洞以及消除包含在目标区域中的小颗粒噪声。 膨胀也可以用来连接两个分开的物体。)
def swelld(gray):
kernel = np.ones((5, 5), np.uint8) #卷积核
swelld = cv2.dilate(gray, kernel, iterations=1) # 膨胀
return swelld
#开运算
#(先腐蚀再膨胀),它被用来去除噪声。cv2.MORPH_OPEN
def Opening(gray):
kernel = np.ones((5, 5), np.uint8) #卷积核
Opening = cv2.morphologyEx(gray, cv2.MORPH_OPEN, kernel) # 开运算
return Opening
#闭运算
# (先膨胀再腐蚀)它经常被用来填充前景物体中的小洞,或者前景物体上的小黑点。
def Closing(gray):
kernel = np.ones((5, 5), np.uint8) # 卷积核
Closing = cv2.morphologyEx(gray, cv2.MORPH_CLOSE, kernel) # 闭运算
return Closing
#形态学梯度
#前景物体的轮廓
def Gradient(gray):
kernel = np.ones((5, 5), np.uint8) # 卷积核
Gradient = cv2.morphologyEx(gray, cv2.MORPH_GRADIENT, kernel) # 形态学梯度
return Gradient
#礼帽
#礼帽图像=原始图像-开运算(cv2.MORPH_TOPHAT)
def Tophat(gray):
kernel=np.ones((5, 5), np.uint8) # 卷积核
Tophat = cv2.morphologyEx(gray, cv2.MORPH_TOPHAT, kernel) # 礼帽
return Tophat
#黑帽
#黑帽图像=闭运算-原始图像(cv2.MORPH_BLACKHAT)
def Blackhat(gray):
kernel = np.ones((5, 5), np.uint8) # 卷积核
Blackhat = cv2.morphologyEx(gray, cv2.MORPH_BLACKHAT, kernel) # 黑帽
return Blackhat