Opencv 学习笔记:文字图像预处理(二值化 + 闭运算优化)

文字图像识别前的预处理是提升识别率的关键,本文以文字图像为例,演示 "灰度化→二值化→闭运算" 的标准化预处理流程,解决文字笔画断裂、孔洞问题,新手可直接复用。

核心代码实现

python 复制代码
import cv2 as cv
import numpy as np

# 1. 读取图像并校验
src = cv.imread(".\image\8.bmp")
if src is None:
    print('could not load image')
    exit()

# 2. 自适应窗口显示原图(适配不同屏幕)
cv.namedWindow('src', cv.WINDOW_NORMAL)
cv.resizeWindow('src', 700, 400)
cv.imshow("src", src)

# 3. 预处理核心流程
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)  # 转灰度图
ret, binary = cv.threshold(gray, 120, 255, cv.THRESH_BINARY)  # 二值化
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))  # 3×3矩形核
closed1 = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel)  # 闭运算填补笔画孔洞

# 4. 显示处理后图像
cv.namedWindow('outimage', cv.WINDOW_NORMAL)
cv.resizeWindow('outimage', 700, 400)
cv.imshow('outimage', closed1)

cv.waitKey(0)
cv.destroyAllWindows()

关键知识点解析

1. 文字图像预处理逻辑

步骤 核心作用 调优要点
灰度化 去除颜色干扰,简化后续计算 必选步骤,无参数可调
二值化 将文字(前景)与背景分离,转为黑白图像 阈值 120 可根据文字明暗调整
闭运算 填补文字笔画中的小孔洞、连接断裂笔画 3×3 核适配常规文字,避免过度膨胀

2. 实用细节说明

  • 窗口自适应cv.WINDOW_NORMAL + resizeWindow 解决高分辨率文字图像显示不全问题,固定 700×400 适配大部分屏幕;
  • 核大小选择:文字预处理优先用 3×3 小核,过大的核会导致文字笔画粘连,影响后续识别;
  • 阈值调整:若文字偏暗,可降低二值化阈值(如 100);若背景噪点多,可提高阈值(如 140)。

3. 扩展优化方向

  • 若文字有白色噪点:在闭运算前增加开运算(cv.MORPH_OPEN)消除噪点;
  • 若光照不均:替换固定阈值二值化为自适应二值化(cv.adaptiveThreshold);
  • 批量处理:封装为函数,遍历文件夹实现多文字图像自动预处理。

总结

  1. 文字图像预处理核心是 "灰度→二值化→闭运算",闭运算可有效修复文字笔画断裂问题;
  2. 3×3 小核是文字处理的最优选择,避免核过大导致笔画粘连;
  3. 窗口自适应显示是提升实操体验的小技巧,适配不同分辨率图像。
相关推荐
世人万千丶5 小时前
鸿蒙日志体系高级应用:HiLog分级输出/隐私脱敏/远程日志采集/线上问题精准溯源方案
学习·harmonyos·鸿蒙
ctlover8 小时前
Python学习第 5 日
学习
六点_dn9 小时前
RabbitMQ学习笔记-部署和使用
笔记·学习·rabbitmq
2501_9269783310 小时前
以说明书 DNA 为模板——完整 AGI 的结构图景
前端·人工智能·经验分享·笔记·ai写作
天天爱吃肉821810 小时前
商用车多体动力学实战笔记|第6篇:动力传动系统(发动机、变速箱、分动器、TCS、LSD限滑差速)
大数据·人工智能·笔记·python·嵌入式硬件·汽车
IT199511 小时前
Dify 实战笔记:工作流核心玩法 + 开源 AI 应用全解析
笔记
MartinYeung511 小时前
[论文学习]OSReward:为跨平台计算机使用奖励模型建立标准化评估
人工智能·学习
dong13269711 小时前
Agent Skills学习笔记
笔记·学习
for_ever_love__12 小时前
iOS:网络请求再学习
网络·学习·ios·objective-c
世人万千丶12 小时前
鸿蒙Crash高级捕获与异常监控:全局异常兜底/崩溃栈解析/符号表还原/智能聚类/闭环修复
学习·机器学习·华为·数据挖掘·harmonyos·鸿蒙·聚类