本项目是一个基于传统计算机视觉技术的火车票检测与要素提取系统,能够自动从输入图像中检测浅蓝色火车票,进行校正和尺寸标准化,并分割提取出火车票上的关键要素信息。
- 火车票检测与定位:自动从图像中检测并定位浅蓝色火车票
- 透视变换与校正:将倾斜的火车票校正为水平方向
- 尺寸标准化:将火车票调整到标准尺寸比例(54:85)
- 要素分割与提取:自动分割并提取火车票上的关键要素
- 处理步骤可视化:保存整个处理流程的中间结果,便于分析和调试
-
创建虚拟环境:
# Windows python -m venv venv # macOS/Linux python3 -m venv venv
-
激活虚拟环境:
# Windows (cmd) venv\Scripts\activate # Windows (PowerShell) .\venv\Scripts\Activate.ps1 # macOS/Linux source venv/bin/activate
-
安装依赖:
pip install -r requirements.txt
如果不想使用虚拟环境,可以直接安装依赖:
pip install opencv-python==4.8.0.76 numpy==1.24.3-
准备图像:
- 将火车票图像放在脚本所在目录
- 支持的格式:.jpg, .jpeg, .png
-
运行脚本:
python main.py
-
查看结果:
- 处理结果将保存在
output目录中 - 每个图像会创建一个单独的子目录
- 最终结果:
output/[图像名称]/final_ticket.jpg - 提取的要素:
output/[图像名称]/20_element_*.jpg - 处理步骤:
output/[图像名称]/processing_steps/
- 处理结果将保存在
train_ticket/
├── main.py # 主脚本
├── requirements.txt # 依赖配置文件
├── README.md # 项目说明文档
├── 火车票检测与要素提取系统文档.md # 详细技术文档
├── output/ # 输出目录
│ ├── [图像名称1]/ # 图像1的输出
│ ├── [图像名称2]/ # 图像2的输出
│ └── ...
├── ticket.jpg # 示例图像
├── ticket1.jpg # 示例图像
└── venv/ # 虚拟环境(创建后出现)
- main.py:主脚本,包含完整的火车票检测与要素提取逻辑
- requirements.txt:依赖配置文件,列出项目所需的Python包
- 火车票检测与要素提取系统文档.md:详细的技术文档,包含实现原理、代码结构和优化策略
- output/:输出目录,存储处理结果和中间步骤
- opencv-python:计算机视觉库,用于图像处理、轮廓检测、透视变换等
- numpy:数值计算库,用于数组操作和数学计算
可能原因:
- 火车票颜色与默认HSV范围不匹配
- 图像质量差,噪声过多
- 火车票被其他物体遮挡
解决方案:
- 调整HSV范围配置(修改output/hsv_config.json)
- 确保图像清晰,避免过度曝光或曝光不足
- 确保火车票完整显示在图像中,无遮挡
可能原因:
- 投影阈值设置不当
- 平滑窗口大小不合适
- 要素坐标与实际火车票不匹配
解决方案:
- 调整投影阈值参数
- 调整平滑窗口大小
- 更新要素比例坐标(修改output/element_ratio_coordinates.json)
详细的技术实现文档请参考:
- 火车票检测与要素提取系统文档.md:包含完整的技术原理、代码结构和优化策略
- 当前版本:v1.0
- 创建日期:2026年1月27日
- 更新日期:2026年1月27日