一. 基础铺垫
图像的开闭运算是在图像膨胀腐蚀的基础上得到的,图像膨胀腐蚀可参考:膨胀与腐蚀
通俗理解:膨胀即"增肥", 腐蚀即"减肥"。
二. 开闭运算
开运算:先腐蚀,再膨胀。一般用来去除物体外边的毛刺。
闭运算:先膨胀,再腐蚀。一般用来去掉物体内部缺陷。
一个小例子:
import cv2
import numpy as np
if __name__ == "__main__":
img_mask = cv2.imread("test.jpg")
# 执行两次开操作(先腐蚀后膨胀),去掉毛刺
kernel1 = np.ones((80,80), dtype=np.uint8)
mask = cv2.morphologyEx(img_mask, cv2.MORPH_OPEN, kernel1, 2)
# 执行两次闭操作(先膨胀后腐蚀),去掉内部缺陷
kernel2 = np.ones((20,20), dtype=np.uint8)
mask2 = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel2, 2)
res = np.hstack([img_mask, mask, mask2])
cv2.imwrite("res.jpg", res)
res.jpg的结果如下: