73 lines
1.9 KiB
Markdown
73 lines
1.9 KiB
Markdown
![]() |
# 文字识别程序(改进版)
|
|||
|
|
|||
|
这是一个使用OpenCV识别图片中文字的Python程序,采用先识别白色区域再识别文字的两步法策略。
|
|||
|
|
|||
|
## 功能特点
|
|||
|
|
|||
|
- **两步识别策略**:先检测白色区域,再在白色区域内识别文字
|
|||
|
- 使用HSV色彩空间精确分离白色区域
|
|||
|
- 基于轮廓检测和特征分析的文字分类
|
|||
|
- 能够识别数字1、2和字母B等字符
|
|||
|
- 自动保存识别结果图片,包含区域标注和字符识别
|
|||
|
|
|||
|
## 安装依赖
|
|||
|
|
|||
|
```bash
|
|||
|
pip install -r requirements.txt
|
|||
|
```
|
|||
|
|
|||
|
## 使用方法
|
|||
|
|
|||
|
1. 将需要识别的图片放在`imgs/`文件夹中
|
|||
|
2. 运行程序:
|
|||
|
```bash
|
|||
|
python text_image.py
|
|||
|
```
|
|||
|
|
|||
|
## 程序流程
|
|||
|
|
|||
|
### 第一步:白色区域检测
|
|||
|
1. 转换到HSV色彩空间
|
|||
|
2. 使用颜色阈值分离白色区域
|
|||
|
3. 形态学操作连接相近区域
|
|||
|
4. 轮廓检测和筛选
|
|||
|
|
|||
|
### 第二步:文字识别
|
|||
|
1. 在白色区域内提取ROI
|
|||
|
2. 二值化处理突出文字
|
|||
|
3. 查找文字轮廓
|
|||
|
4. 特征提取和分类
|
|||
|
|
|||
|
## 识别原理
|
|||
|
|
|||
|
- **数字1**:垂直投影方差小,水平投影方差小,中心密度低
|
|||
|
- **数字2**:垂直投影方差大,水平投影方差大,中心密度高
|
|||
|
- **字母B**:水平投影方差大,整体密度高
|
|||
|
|
|||
|
## 输出说明
|
|||
|
|
|||
|
- **蓝色边框**:标注检测到的白色区域
|
|||
|
- **绿色边框**:标注成功识别的字符
|
|||
|
- **红色边框**:标注无法识别的字符
|
|||
|
- **文字标签**:显示识别结果(1、2、B、unknown)
|
|||
|
|
|||
|
## 输出文件
|
|||
|
|
|||
|
程序会在`imgs/`文件夹中生成:
|
|||
|
- `result_1_improved.jpg`:第一张图片的识别结果
|
|||
|
- `result_2_improved.jpg`:第二张图片的识别结果
|
|||
|
|
|||
|
## 优势
|
|||
|
|
|||
|
- 避免了复杂背景的干扰
|
|||
|
- 提高了文字识别的准确性
|
|||
|
- 清晰的区域划分和结果展示
|
|||
|
- 更好的噪声过滤
|
|||
|
|
|||
|
## 注意事项
|
|||
|
|
|||
|
- 确保图片中有明显的白色区域
|
|||
|
- 白色区域内的文字对比度要足够
|
|||
|
- 程序会自动过滤太小的区域和轮廓
|
|||
|
- 识别结果包含区域ID和字符ID信息
|