13 形态学操作:膨胀、腐蚀、开运算、闭运算
形态学操作是图像处理中基于形状的一系列操作。它们对于图像前处理、特征提取和图像恢复等环节非常有帮助。在本节中,我们将专注于介绍四种基本的形态学操作:膨胀、腐蚀、开运算和闭运算。这些操作在OpenCV-Python中都有很好的支持,并且易于使用。
膨胀(Dilation)
膨胀是一种形态学操作,它是通过将图像与一个核(或称为结构元素)进行卷积并取局部最大值来实现的。膨胀可以增加图像中白色区域的面积,并减少黑色区域。
函数语法:
cv2.dilate(src, kernel, iterations = 1)
src
: 输入图像。kernel
: 结构元素,可以使用cv2.getStructuringElement()
创建。iterations
: 膨胀的次数,默认值为1。
例题:
import cv2
import numpy as np
img = cv2.imread('input.jpg', 0) # 以灰度模式读取图像
kernel = np.ones((5,5),np.uint8) # 创建5x5的结构元素
dilation = cv2.dilate(img, kernel, iterations = 1)
cv2.imshow('Dilation', dilation)
cv2.waitKey(0)
cv2.destroyAllWindows()
腐蚀(Erosion)
与膨胀相反,腐蚀操作会减少图像中白色区域的面积,并增加黑色区域。这通过将图像与核进行卷积并取局部最小值来实现。
函数语法:
cv2.erode(src, kernel, iterations = 1)
例题:
img_erode = cv2.erode(img, kernel, iterations = 1)
cv2.imshow('Erosion', img_erode)
cv2.waitKey(0)
cv2.destroyAllWindows()
开运算(Opening)
开运算是先腐蚀后膨胀的过程。这对于去除小的白噪声很有用。
函数语法:
cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)
例题:
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.imshow('Opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()
闭运算(Closing)
闭运算则是先膨胀后腐蚀的操作,用于关闭前景对象内的小洞或小黑点。
函数语法:
cv2.morphologyEx(src, cv2.MORPH_CLOSE, kernel)
例题:
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
cv2.imshow('Closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()
通过上述介绍和例题,我们了解了在OpenCV-Python中如何实现和应用形态学操作中的膨胀、腐蚀、开运算和闭运算。这些操作对于图像预处理和改进图像分析结果非常重要,掌握它们能够让我们更好地处理和分析图像数据。
单击【阅读原文】参加OpenCV-Python课程学习。
单击【阅读原文】参加OpenCV-Python课程学习。
在本公众号【计算机视觉之光】回复关键字“叮叮当当”获取更多的Python学习资料。