OpenCV与Python实现图像膨胀和腐蚀详解

拾光
拾光
发布时间:2026-10-15| 5人浏览过
原创

本文介绍利用OpenCV和Python进行图像形态学处理的方法,重点解析膨胀与腐蚀的原理。通过3x3内核示例说明像素极值提取过程,并指出操作针对高亮区域。附带完整Python代码,展示如何使用cv2.getStructuringElement定义结构元素,结合cv.threshold进行二值化后执行腐蚀和膨胀操作,实现图像区域的扩张或收缩效果。

1,概念及原理:

膨胀(Dilation)操作涉及以下步骤: (1)使用任意形状的内核(B),通常为正方形或圆形,对图像A进行卷积运算。 (2)内核B包含一个可定义的锚点,一般位于内核中心。 (3)执行膨胀时,内核B在图像A上滑动,提取被内核覆盖区域内的最大像素值,并用该值替换锚点位置的像素。这种最大化操作使得图像中的亮区向外“扩展”,从而得名膨胀(dilation)。

以3*3的内核为例:


腐蚀(Erosion)是膨胀的对应操作: (1)在形态学操作家族中,腐蚀被视为膨胀的孪生操作,它提取的是内核覆盖下的最小像素值。 (2)执行腐蚀时,将内核B在图像上滑动,提取被内核覆盖区域内的最小像素值,并用该值替换锚点位置的像素。

需要注意的是:腐蚀和膨胀操作针对的是图像中的白色部分(即高亮部分),而非黑色背景。膨胀会使图像中的高亮区域向外扩张,导致效果图的高亮区域比原图更大;腐蚀则使原图中的高亮区域向内收缩,导致效果图的高亮区域比原图更小。

源代码:


import cv2 as cv
import numpy as np


def erode_demo(image):
  # print(image.shape)
  gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
  ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
  #cv.imshow("binary", binary)
  kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))#定义结构元素的形状和大小
  dst = cv.erode(binary, kernel)#腐蚀操作
  cv.imshow("erode_demo", dst)


def dilate_demo(image):
  #print(image.shape)
  gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
  ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
  #cv.imshow("binary", binary)
  kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))#定义结构元素的形状和大小
  dst = cv.dilate(binary, kernel)#膨胀操作
  cv.imshow("dilate_demo", dst)



src = cv.imread("F:/images/test01.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
erode_demo(src)
dilate_demo(src)

cv.waitKey(0)

cv.destroyAllWindows()

运行结果:



到此这篇关于OpenCV+python实现膨胀和腐蚀的示例的文章就介绍到这了,更多相关OpenCV 膨胀和腐蚀内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。