仓库:MuZiCul/lpr(原创)· 语言:Python (Flask + OpenCV) · 定位:10 步图像处理流水线 + 动态权重融合 + 百度 OCR 双重验证
这是作者技术含量最高的项目之一:不是简单调 API,而是自研了完整的识别流水线与融合决策体系。
class ImageRecord(db.Model):
id = db.Column(db.Integer, primary_key=True)
image_hash = db.Column(db.String(64), unique=True, nullable=False) # 图像哈希(缓存键)
timestamp = db.Column(db.String(20), nullable=False)
final_result = db.Column(db.String(20))
confidence = db.Column(db.Float)
processed_images = db.Column(db.JSON) # 各步骤中间图
recognition_results = db.Column(db.JSON) # 各步骤识别结果
created_at = db.Column(db.DateTime, default=datetime.now)
baidu_result = db.Column(db.JSON) # 百度 API 结果(用于对比)
class WeightSetting(db.Model):
id, step, weight, description, updated_at
class APIConfig(db.Model):
id, app_id, api_key, secret_key, updated_at
系统对每张车牌图执行 10 个处理步骤,每步单独识别并对最终结果投票:
| 步骤 | 处理 | 默认权重 | 设计理由 |
|---|---|---|---|
| 1 | 原图 | 1.0 | 完整清晰的原图识别结果最可靠 |
| 2 | 颜色特征提取 | 0.7 | 可能受光照影响 |
| 3 | 灰度处理 | 0.9 | 保留主要特征 |
| 4 | 直方图均衡化 | 0.9 | 增强对比度 |
| 5 | 高斯模糊 | 1.0 | 去噪但可能损失细节 |
| 6 | Sobel 边缘检测 | 0.5 | 边缘特征有用但不完整 |
| 7 | 自适应阈值 | 0.2 | 二值化可能丢失信息 |
| 8 | CLAHE 增强 | 0.9 | CLAHE 算法效果好 |
| 9 | 锐化处理 | 0.8 | 增强边缘但可能引入噪声 |
| 10 | 形态学处理 | 0.2 | 主要用于定位 |
默认权重在代码中定义为 WeightSetting.get_default_weights(),权重可按场景动态调整(精度 0.05)。
这是一个很有启发的设计——不迷信某一种预处理,而是让 10 种处理结果按置信度加权投票。阈值化和形态学步骤权重低(0.2)是因为它们"破坏性"强,而原图和高斯模糊权重最高。
import cv2 # OpenCV 图像处理
from aip import AipOcr # 百度 OCR SDK(本地识别 + 云端双重验证)
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
import hashlib # 图像哈希
license_plate.db)uploads/,处理后图片:processed/这个项目最值得学习的是"工程化的识别系统"思维:
相比"调个 OCR API 返回结果"的做法,这套体系体现了真正的工程深度。对做图像识别/计算机视觉落地的开发者很有参考价值。