OpenCV核心内容100讲【第13讲】形态学操作:膨胀、腐蚀、开运算、闭运算

文摘   2025-01-12 07:56   天津  


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模拟试卷】获得《数字图像处理(OpenCV-Python》模拟试卷及参考答案。
在公众号【计算机视觉之光】回复 【Python试卷】获得《Python程序设计》模拟试卷及参考答案。

单击【阅读原文】参加OpenCV-Python课程学习。

在本公众号【计算机视觉之光】回复关键字“叮叮当当”获取更多的Python学习资料。


计算机视觉之光
电子工业出版社优秀作者,代表作《OpenCV轻松入门》,《计算机视觉40例》。
 最新文章