腐蚀

通常对二值图片进行腐蚀操作

kernel = np.ones((3, 3), np.uint8) # 定义核
erosion = cv2.erode(img, kernel, iteratoons= )

去毛刺、使线条变细

膨胀

腐蚀的逆运算

例子:腐蚀去掉毛刺了,但是让图片线条变细了,这时候再膨胀图片

kernel = np.ones((30, 30), np.uint8)
dilation = cv2.dilate(img, kernel, iterations= )

运算

开运算:先腐蚀再膨胀

kernel = np.ones((3, 3), np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

E.g. 去毛刺

闭运算:先膨胀再腐蚀

kernel = np.ones((3, 3), np.uint8)
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

E.g. 补全空缺

梯度运算:膨胀-腐蚀

kernel = np.ones((3, 3), np.uint8)
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

礼帽与黑帽

礼帽:原始输入-开运算

tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

剩下毛刺

黑帽:闭运算-原始输入

blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)

剩下原始轮廓