基于深度学习的车辆识别收费管理系统(全套源码+数据集)

前后端分离的停车场收费与车牌识别演示系统:管理员使用后台进行通行、车辆、订单、费率与用户管理;普通用户使用前台查看车辆、识别车牌与停车订单。

技术栈

层级 技术
后端 Python 3.9+、Flask、SQLAlchemy、Flask-JWT-Extended、PyMySQL
前端 Vue 3、Vite 4、Pinia、Vue Router、Element Plus、ECharts
数据库 MySQL 8.x(utf8mb4)
识别 YOLO 检测 + 自训练 CRNN+CTC 车牌字符识别(plate_recognition/)

目录结构(相对项目根 c145/)

plain 复制代码
c145/
├── backend/                 # Flask 后端
│   ├── app/
│   │   ├── api/             # REST 蓝图:auth、vehicle、access、order、rate、admin
│   │   ├── models/          # ORM 模型
│   │   ├── services/        # 计费、停车会话
│   │   └── recognition/     # 识别封装
│   ├── uploads/             # 上传图片(运行时生成)
│   ├── run.py               # 启动入口
│   └── requirements.txt
├── frontend/                # Vue 前端
│   ├── src/
│   └── package.json
├── runs/detect/runs/train/license_plate_detection/weights/
│   └── best.pt              # 训练好的检测权重(相对路径由 config 自动解析)
├── init.sql                 # 建表参考(也可依赖后端首次启动自动建表)
├── train.py                 # YOLO 检测训练(可选)
├── plate_recognition/       # 车牌 CRNN+CTC 识别训练(见下文)
└── README.md

环境要求

  • Python 3.9+
  • Node.js 16(前端 package.json 与 Vite 4 对齐)
  • MySQL 已安装并创建库:vehicle_system,字符集 utf8mb4
  • 已训练好的检测模型与字符识别模型需位于项目指定目录中

快速开始

1. 数据库

在 MySQL 中执行:

sql 复制代码
CREATE DATABASE vehicle_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

可选:使用根目录 init.sql 手工建表;若跳过后端首次启动会通过 SQLAlchemy create_all() 建表并写入默认账号。

2. 后端

bash 复制代码
cd backend
pip install -r requirements.txt
python run.py

默认监听 http://0.0.0.0:5000。

数据库连接默认:localhost:3306,用户 root,密码 root,库名 vehicle_system。若不一致,可设置环境变量或修改 backend/app/config.py:

  • DB_HOST、DB_PORT、DB_USER、DB_PASSWORD、DB_NAME

3. 前端

bash 复制代码
cd frontend
npm install
npm run dev

开发地址一般为 http://localhost:5173。vite.config.js 已将 /api 代理到 http://localhost:5000。

生产构建:

bash 复制代码
npm run build

将 dist/ 部署到任意静态服务器,并保证接口同源或配置反向代理到后端。

默认账号

角色 用户名 密码 说明
管理员 admin admin123 进入管理后台 /admin
普通用户 user1 user123 进入用户前台 /user

首次启动若库中无对应用户,应用会在 _seed_default_data 中创建上述账号(密码已哈希存储)。

车牌识别说明

  • 检测模型:runs/detect/runs/train/license_plate_detection/weights/best.pt(相对项目根,由 PROJECT_ROOT 拼接,支持项目整体移动 ;路径含中文时已通过 pathlib 与二进制读取方式规避常见路径兼容问题)。
  • 字符识别模型:runs/plate_crnn/best.pt,由项目内 plate_recognition/ 训练脚本生成并在后端接口中直接加载。
  • 识别流程:YOLO 框出车牌区域 → 扩框裁剪 → 灰度缩放预处理 → CRNN+CTC 推理解码 → 返回车牌号、置信度与检测框。
  • 置信度融合:检测结果综合 YOLO 检测置信度与 CRNN 字符识别置信度,输出最终识别结果。

车牌 CRNN+CTC 识别训练(CCPD 风格数据)

依赖:已安装 PyTorch (与 YOLO 环境一致即可)。数据目录为项目下 dataset/,需含 images/train|val 与 labels/train|val(与现有 YOLO 转换结果一致),且 jpg 文件名为 CCPD 编码(可从文件名第五段解析真实车牌)。

在项目根 c145/ 执行:

bash 复制代码
python -m plate_recognition.train_recognition --epochs 40 --batch-size 64 --device cuda
  • 默认 --data-root 为 ./dataset,权重与字符表输出到 runs/plate_crnn/best.pt、chars.json。
  • 3060 12G 可酌情增大 batch-size。
  • 训练完成后,后端识别接口会直接加载 best.pt 做字符识别推理,并与检测裁剪流程对接。

接口与权限简述

  • 登录:POST /api/auth/login,返回 JWT;请求头携带 Authorization: Bearer <token>。
  • 管理员:用户管理、全量车辆、费率、订单减免/收费、通行记录等。
  • 普通用户:仅本人名下车辆与相关订单;可使用识别接口上传图片。

常见问题

  1. 前端跨域 :开发环境走 Vite 代理即可;生产环境请将前后端同源或通过 Nginx 反代 /api。
  2. MySQL 连接失败 :检查账号密码、库是否存在、防火墙与 charset=utf8mb4。
  3. 模型文件找不到 :确认 best.pt 仍在上述 weights 目录;或改 config.py 中 MODEL_PATH(仍建议相对 PROJECT_ROOT)。

@开发日期:2026 年

本项目为个人原创,结构清晰,功能完整,适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求可以评论或私信作者。

作者原创项目地址:michael-jay.pages.dev/projects.ht...

相关推荐
拜小白3 小时前
【论文解读】DMH-Net:用深度曼哈顿霍夫变换从全景立方图估计3D房间布局
深度学习·计算机视觉·全景图
ViperL15 小时前
[智能计算]AutoDiffusion-基于进化NAS的扩散模型
人工智能·深度学习·计算机视觉
薛定e的猫咪6 小时前
(ICLR 2020)MAML 靠的不是快速学习,而是特征复用
人工智能·深度学习·学习·算法·机器学习
薛定e的猫咪7 小时前
(ICLR 2026)DF-META:面向 FJSP 的无导数元学习实例自适应调度
人工智能·深度学习·学习·算法·机器学习
tellmewhoisi7 小时前
深度学习1:基本概念,感知机,激活函数(阶跃,sigmoid,Tanh函数)
人工智能·深度学习
云舜言传9 小时前
Bloom 手势演示操作 · 录屏指南
javascript·深度学习·机器学习
jay神10 小时前
基于 YOLOv8 与 Faster R-CNN 的盲道障碍检测系统
人工智能·深度学习·yolo·计算机视觉·cnn·课程设计·计算机毕业设计
打不了嗝 ᥬ᭄11 小时前
Swin Transformer 详解:窗口注意力如何成为新一代视觉 backbone
深度学习·计算机视觉·自注意力机制·swintransformer
落雪snowflake11 小时前
论文精讲:A Language-Informed Loss for Visual Generation中文题目:一种面向视觉生成的语言信息引导损失函数
人工智能·深度学习·计算机视觉
葫三生11 小时前
关于三生原理系列被技术开发社区批量收录或引发策展边界讨论的一种思考
大数据·人工智能·深度学习·算法·机器学习·数据挖掘·开源