车牌识别系统 - 基于HyperLPR3/MNN的嵌入式C++车牌识别平台,支持多路RTSP视频流、飞书消息推送、MQTT、Web管理、重量调度、登录认证等功能
|
|
1 день тому | |
|---|---|---|
| assets | 4 днів тому | |
| config | 4 днів тому | |
| scripts | 4 днів тому | |
| src | 1 день тому | |
| third_party | 4 днів тому | |
| CHANGELOG.md | 1 день тому | |
| CMakeLists.txt | 4 днів тому | |
| README.md | 1 день тому | |
| sync_to_gogs.sh | 1 день тому |
基于 HyperLPR3 / MNN 的嵌入式 C++ 车牌识别平台,运行于树莓派5 + Ubuntu 24.04
版本: fix27 v44 | 最后更新: 2026-08-30
Gogs 仓库: https://git.zhonjin.com:40717/steven_roc/PlateRecApp
PlateRecApp 是一套面向工业园区/物流场站的全功能车牌识别与称重管理系统,支持多路 RTSP 视频流实时识别、飞书消息推送、MQTT 数据上报、Web 管理后台、登录认证、frpc 内网穿透管理等核心功能。
| 模块 | 功能说明 |
|---|---|
| 车牌识别 | HyperLPR3 + MNN 推理引擎,支持低位摄像头 ROI 推理 |
| 视频流 | 4路独立 RTSP 视频流 + Web 端 ROI 手动调整 |
| 飞书推送 | 进出站消息推送,支持携带重量信息,独立开关控制 |
| MQTT | 数据上报,独立开关控制,v43 并行模式支持 |
| 称重系统 | 重量调度器(promise/future 异步机制),15秒超时 |
| Web 管理 | 登录认证、系统监控、日志管理、frpc 管理、SSH 密钥管理 |
| 站点锁 | 交替锁定机制,防止重复抓拍竞态 |
| 日志管理 | logrotate 自动清理,系统指标历史记录 |
┌─────────────────────────────────────────────────────┐
│ PlateRecApp │
├──────────┬──────────┬──────────┬────────────────────┤
│ 车牌识别 │ 重量调度 │ Web服务 │ 飞书/MQTT推送 │
│ HyperLPR3│ 异步引擎 │ 认证+监控 │ 独立开关控制 │
├──────────┴──────────┴──────────┴────────────────────┤
│ 统一配置管理 (config.ini) │
├─────────────────────────────────────────────────────┤
│ SQLite DB │ MQTT Client │ RTSP Capture │
└─────────────────────────────────────────────────────┘
| 项目 | 要求 |
|---|---|
| 硬件 | 树莓派5 8G(兼容 Ubuntu-24.04 / Raspberry Pi OS) |
| 编译器 | GCC, C++17 |
| 核心依赖 | OpenCV 4.x, MNN, HyperLPR3 SDK |
| 其他依赖 | cJSON, cpp-httplib, bcrypt, ini-parser |
| 数据库 | SQLite3 |
| 网络 | 飞书 API, MQTT Broker, RTSP 视频流 |
PlateRecApp/
├── src/ # 源代码
│ ├── main.cpp # 主程序入口
│ ├── common.cpp/h # 公共定义与全局变量
│ ├── config.cpp/h # 配置文件解析 (config.ini)
│ ├── plate_recognizer.cpp/h # 车牌识别核心 (HyperLPR3+MNN)
│ ├── rtsp_capture.cpp/h # RTSP 视频流采集
│ ├── web_server.cpp/h # Web 管理服务器 (cpp-httplib)
│ ├── database.cpp/h # SQLite 数据库操作
│ ├── feishu_client.cpp/h # 飞书消息推送客户端
│ ├── mqtt_client.cpp/h # MQTT 客户端
│ ├── weight_dispatcher.cpp/h # 重量调度器 (promise/future)
│ ├── weight_scale.cpp/h # 称重模块
│ ├── station_lock.cpp/h # 站点交替锁定机制
│ ├── system_monitor.cpp/h # 系统监控 (CPU/内存/温度)
│ ├── system_metrics_manager.cpp/h # 系统指标管理+历史记录
│ ├── log_manager.cpp/h # 日志管理+logrotate
│ ├── frpc_manager.cpp/h # frpc 内网穿透管理
│ ├── ssh_manager.cpp/h # SSH 密钥管理
│ ├── network_client.cpp/h # 网络客户端 (API上传)
│ ├── utils.cpp/h # 工具函数
│ ├── auth_api.cpp/h # 认证 API
│ ├── auth_db.cpp/h # 认证数据库
│ ├── auth_session.cpp/h # 会话管理
│ ├── auth_middleware.cpp/h # 认证中间件
│ ├── auth_crypto.cpp/h # 加密工具 (bcrypt)
│ ├── auth_rate_limiter.h # 速率限制
│ └── bcrypt/ # bcrypt 密码哈希库
├── config/ # 配置示例
│ ├── config一号门.ini # 一号门配置模板
│ └── config二号门.ini # 二号门配置模板
├── scripts/ # 部署脚本
│ ├── deploy.sh # 一键部署脚本
│ ├── reset_passwords.py # Web 管理密码重置工具
│ └── setup_frpc_sudoers.sh # frpc sudoers 配置
├── third_party/ # 第三方依赖源码
│ ├── cJSON.c/h # JSON 解析
│ ├── cvxFont.cpp/h # OpenCV 中文字体
│ ├── httplib.h # cpp-httplib 头文件库
│ ├── hyper_lpr_sdk.h # HyperLPR3 SDK 头文件
│ ├── ini.c/h # INI 配置解析
│ └── md5ex1.c/h # MD5 工具
├── assets/web/ # Web 前端资源 (HTML/CSS/JS)
├── CMakeLists.txt # CMake 构建配置
├── CHANGELOG.md # 详细变更日志
└── README.md # 本文件
git clone https://git.zhonjin.com:40717/steven_roc/PlateRecApp.git
cd PlateRecApp
mkdir build && cd build
cmake ..
make -j4
# 复制配置模板并修改
cp config/config一号门.ini config.ini
# 编辑 config.ini 填入实际参数
sudo bash scripts/deploy.sh
sudo systemctl status PlateRecApp
# 访问 Web 管理: http://<设备IP>:8080
核心配置通过 config.ini 管理:
[rtsp]
# RTSP 视频流地址(支持4路)
URL_1 = rtsp://...
URL_2 = rtsp://...
[feishu]
ENABLED = 1 # 1=启用飞书消息推送,0=禁用
WEBHOOK_URL = https://open.feishu.cn/open-apis/bot/v2/hook/xxx
[MQTT]
MQTT_ENABLED = 1 # 1=启用MQTT消息推送,0=禁用
MQTT_HOST = xxx
MQTT_PORT = 1883
[weight]
flagWeight = 1 # 飞书消息是否携带重量信息 (1=是)
[web]
PORT = 8080 # Web 管理端口
| 功能 | 路径 | 说明 |
|---|---|---|
| 首页仪表盘 | / |
系统概览、最新抓拍 |
| 登录认证 | /login |
超级管理员/普通用户双角色 |
| 系统监控 | /monitor |
CPU/内存/磁盘/温度实时监控 |
| frpc 管理 | /frpc |
内网穿透服务管理 |
| SSH 密钥 | /ssh |
Web 端 SSH 密钥管理 |
| 日志管理 | /logs |
在线查看 + logrotate |
| ROI 调整 | /roi |
Web 端 4 路视频 ROI 手动调整 |
| 视频预览 | /video |
实时视频流预览 |
| 称重记录 | /weight |
称重数据查询 |
| 角色 | 用户名 | 密码 | 权限 |
|---|---|---|---|
| 超级管理员 | admin | zhonjin188A | 所有页面 |
| 普通用户 | zhonjin | zhonjin | 基础页面 |
首次部署后建议通过
scripts/reset_passwords.py修改默认密码
g_feishu_enabled) 控制| 版本 | 日期 | 主要内容 |
|---|---|---|
| fix27 v44 | 2026-08-30 | 飞书消息携带重量、水印居中、MQTT修复、内存泄漏修复 |
| fix26 v44 | 2026-08-30 | 飞书/MQTT独立开关 |
| fix25 v44 | 2026-08-30 | P0 prelock 优化 |
| fix24 v43 | 2026-08-30 | 系统指标历史、日志管理 |
| fix24 v32-v41 | 2026-07~08 | Web管理、认证系统、frpc管理 |
| fix24 v21 | 2026-07-03 | P0 时间对齐 bug 修复 |
| fix18 | 2026-07-06 | 重复抓拍竞态、4路视频流、MQTT合并 |
| V5 fix19 | 2026-06-25 | 基础版本 |
详细变更记录请查看 CHANGELOG.md
项目包含 sync_to_gogs.sh 脚本,每次代码更新后执行即可自动同步到 Gogs 仓库:
bash sync_to_gogs.sh
本项目为内部使用项目。