OpenCV开发教程之腐蚀与膨胀

7人浏览 / 0人评论 / 添加收藏

OpenCV 腐蚀与膨胀(超清晰易懂版)

小编将提供最简单、最实用、直接能跑的讲解 + 代码,专门解决你之前遇到的图像处理问题。

从图上,我们明显能看出,左侧的是正常的图。右侧是膨胀后的图,变胖了。底部是腐蚀后的图,变瘦了。

一、一句话理解

  • 膨胀(Dilate):白色区域变大,填充小黑点
  • 腐蚀(Erode):白色区域变小,消除小白点
  • 常用于:去噪、分割文字、连通区域、轮廓预处理

二、Python OpenCV 完整代码(直接复制运行)

import cv2
import numpy as np

# 1. 读取图片(灰度图)
img = cv2.imread("test.png", 0)

# 2. 定义核大小(越大效果越强)
kernel = np.ones((3, 3), np.uint8)

# 3. 腐蚀:白色变小,消除噪点
erode_img = cv2.erode(img, kernel, iterations=1)

# 4. 膨胀:白色变大,填充缺口
dilate_img = cv2.dilate(img, kernel, iterations=1)

# 显示效果
cv2.imshow("original", img)
cv2.imshow("erode 腐蚀", erode_img)
cv2.imshow("dilate 膨胀", dilate_img)

cv2.waitKey(0)
cv2.destroyAllWindows()
 

三、最常用组合:开运算 & 闭运算

 

1. 开运算 = 先腐蚀 + 后膨胀

 
作用:去除小白点噪点,不破坏主体形状
 
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
 

2. 闭运算 = 先膨胀 + 后腐蚀

 
作用:填充小黑洞,连接断裂文字
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
 

四、参数说明

 
  • kernel:结构元素,常用 (3,3)(5,5)
  • iterations:迭代次数,越大效果越强
  • 黑白图像效果最明显
 

五、你之前的 OCR 为什么要用?

 
因为 腐蚀 / 膨胀可以清理文字周围噪点,让 OCR 识别更准!
 

总结

 
  • 腐蚀:白色变小 → 去噪
  • 膨胀:白色变大 → 填充
  • 开闭运算:图像预处理神器

 

全部评论