开运算与闭运算
开运算:腐蚀再膨胀
闭运算:膨胀再腐蚀
kernel = np.ones((5, 5), np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) # 开运算:腐蚀再膨胀
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) # 闭运算:膨胀再腐蚀
show.cv_show('opening', opening)
show.cv_show('closing', closing)
毛刺消失
毛刺未消失
梯度运算(膨胀-腐蚀)
相当于取边界
kernel = np.ones((7, 7), np.uint8)
dilate = cv2.dilate(img, kernel, iterations=5) # 膨胀
erosion = cv2.erode(img, kernel, iterations=5) # 腐蚀
res = np.hstack((dilate, erosion))
show.cv_show('res', res)
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel) # 梯度运算:膨胀-腐蚀
show.cv_show('gradient', gradient)
膨胀腐蚀对比:
梯度运算后:
礼帽与黑帽
礼帽:原始输入-开运算
黑帽:闭运算-原始输入
top = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel) # 礼帽:原始输入-开运算
black = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel) # 黑帽:闭运算-原始输入
show.cv_show('top', top)
show.cv_show('black', black)