项目地址:
https://gitee.com/ff94315/jetson_nx_lpr_framework
演示视频:
https://www.bilibili.com/video/BV1EF3E6LEux/
车牌识别服务 开发说明书
适配平台:Jetson NX / RK3576
核心算法:YOLO26n-OBB(旋转车牌检测)+ CRNN(字符识别)
数据流框架:GStreamer 硬解码 + 两级环形缓冲池
关键特性:原始帧不覆盖、camera_id 全链路透传、低延迟、高可用、双平台通用

目录
文档概述
整体架构
模块功能说明
数据结构定义
核心机制说明
双平台适配方案
输出标准格式
服务特性
术语说明

  1. 文档概述
    本说明书定义面向嵌入式平台的车牌识别服务整体设计方案。 服务支持多路摄像头接入,采用 RTSP+HTTP 双链路冗余、两级环形缓冲池异步解耦、YOLO26n-OBB 旋转框检测+CRNN 识别,可 7×24 小时稳定运行。

核心目标:

保证原始帧不被环形缓冲池覆盖
摄像头 ID 全链路透传,可精准溯源
双平台一套架构,无业务侵入
低延迟、零拷贝、高稳定性

  1. 整体架构
    ┌───────────────────────────────────────────────────────────┐
                     IPC 摄像头集群
    复制
    └─────────────────────────────┬─────────────────────────────┘
    复制
    ┌───────────────────────┴───────────────────────┐
    │ │
    ┌─────▼─────────────┐ ┌─────────▼───────────┐
    │ RTSP 视频流(主) │ │ HTTP 抓图(备) │
    └─────┬─────────────┘ └─────────┬───────────┘
    │ │
    ┌─────▼─────────────┐ ┌─────────▼───────────┐
    │ GStreamer 硬解码 │ │ 图像采集服务 │
    │ Jetson:NVDEC │ │ (兜底补流) │
    │ RK3576:RKMPP │ └─────────┬───────────┘
    └─────┬─────────────┘ │
    │ 【帧携带标签】 │
    │ camera_id + 时间戳 + 帧序号 + 原始帧 │
    └──────────────────┬─────────────────────────────┘
    复制
    ┌────────────────────────▼────────────────────────┐
    │ 一级环形缓冲池(帧缓冲池) │
    │ 作用:解耦解码与检测,共享指针,原始帧不覆盖 │
    └──────────────────┬────────────────────────────────┘
    复制
    ┌──────────────────▼────────────────────────┐
    │ YOLO26n-OBB 旋转车牌检测 │
    │ 输出:四点旋转坐标 (x1,y1,x2,y2,x3,y3,x4,y4) │
    └──────────────────┬────────────────────────┘
    复制
    ┌──────────────────▼────────────────────────┐
    │ 二级环形缓冲池(车牌缓冲池) │
    │ 携带:原始帧 + camera_id + 旋转坐标 + 时间戳 │
    └──────────────────┬────────────────────────┘
    复制
    ┌──────────────────▼────────────────────────┐
    │ CRNN 车牌识别(带透视矫正) │
    └──────────────────┬────────────────────────┘
    复制
    ┌──────────────────▼────────────────────────┐
    │ 统一结果输出模块 │
    │ 原始帧 + 摄像头ID + 旋转坐标 + 识别结果 │
    └───────────────────────────────────────────┘
  2. 模块功能说明
    3.1 摄像头接入模块
    支持多路 IPC 摄像头同时接入
    主链路:RTSP 实时视频流(低延迟、硬解码)
    备链路:HTTP 定时抓图(主链路断流时兜底)
    每帧强制绑定:camera_id、时间戳、帧序号
    3.2 GStreamer 硬解码模块
    双平台原生硬件解码
    Jetson NX:nvv4l2decoder + NVMM 零拷贝
    RK3576:rkvpudec + RGA 硬件加速
    输出格式:BGRx / NV12
    解码后直接送入一级缓冲池,无内存拷贝
    3.3 一级环形缓冲池(帧缓冲池)
    生产者:GStreamer 解码线程、HTTP 采集线程
    消费者:YOLO26n-OBB 检测线程
    存储单元:std::shared_ptr<帧对象>
    核心职责:
    解耦解码与检测速度
    削峰填谷,防止阻塞
    保证原始帧不被覆盖
    透传信息:原始帧、camera_id、时间戳、帧序号
    3.4 YOLO26n-OBB 检测模块
    功能:旋转/倾斜车牌检测
    输出:四点旋转坐标(x1,y1,x2,y2,x3,y3,x4,y4)
    不修改原始帧,仅附加检测结果
    输出至二级环形缓冲池
    3.5 二级环形缓冲池(车牌缓冲池)
    生产者:YOLO 检测线程
    消费者:CRNN 识别线程
    作用:解耦检测与识别速度,避免丢帧
    携带信息:原始帧、camera_id、旋转坐标、置信度
    3.6 CRNN 识别模块
    输入:原始帧 + 四点旋转框
    流程:透视变换 → 车牌矫正 → 字符识别
    输出:车牌号 + 识别置信度
    3.7 统一输出模块
    输出标准化结构
    支持日志、上报、存储、显示
    保证原始帧独立、可溯源、不被覆盖
  3. 数据结构定义
    4.1 帧结构(缓冲池单元)
    帧对象
    ├─ 原始图像数据指针(共享内存)
    ├─ 图像宽度 / 高度 / 行步长
    ├─ camera_id:摄像头唯一标识
    ├─ timestamp:时间戳
    ├─ frame_id:帧序号
    └─ 引用计数:生命周期管理
    4.2 检测结果结构(YOLO26n-OBB)
    车牌检测结果
    ├─ 四点旋转坐标:x1,y1,x2,y2,x3,y3,x4,y4
    ├─ 检测置信度
    ├─ 所属帧 camera_id
    └─ 所属帧时间戳
    4.3 最终输出结构
    识别结果
    ├─ 原始图像帧(独立生命周期,不覆盖)
    ├─ camera_id
    ├─ 四点旋转坐标
    ├─ 车牌号码
    ├─ 检测置信度
    ├─ 识别置信度
    ├─ 时间戳
    └─ 帧序号
  4. 核心机制说明
    5.1 原始帧不被覆盖机制
    环形缓冲池只存储智能指针,不存储裸内存
    帧生命周期由 std::shared_ptr 统一管理
    缓冲池覆写 = 替换槽位指针,不修改帧数据
    只要检测/识别/输出模块持有指针,帧数据永久安全
    全链路零拷贝,原始帧从解码到输出永不改变
    5.2 camera_id 全链路透传
    生成时机:采集/解码阶段绑定
    透传路径: 解码 → 一级缓冲池 → 检测 → 二级缓冲池 → 识别 → 输出
    作用:多路摄像头数据不乱序、可精准溯源
    5.3 双平台通用机制
    上层业务架构 100% 通用
    仅底层硬件解码器不同
    推理引擎自动适配:TensorRT / RKNN
    数据结构、缓冲池、输出格式完全一致
  5. 双平台适配方案
    Jetson NX
    解码:GStreamer + nvv4l2decoder
    内存:NVMM 硬件显存
    推理:YOLO26n-OBB + CRNN → TensorRT
    RK3576
    解码:GStreamer + rkvpudec
    内存:RGA 硬件内存
    推理:YOLO26n-OBB + CRNN → RKNN
  6. 输出标准格式
    每帧最终输出必须包含:

原始图像帧(未修改、不覆盖)
来源摄像头 camera_id
车牌四点旋转坐标 x1,y1,x2,y2,x3,y3,x4,y4
车牌识别字符串
检测置信度 + 识别置信度
时间戳、帧序号

  1. 服务特性
    低延迟:硬解码 + 零拷贝 + 异步缓冲
    高可用:RTSP 主链路 + HTTP 备链路
    防覆盖:共享指针 + 环形池安全机制
    高精度:OBB 旋转框检测 + 矫正识别
    可扩展:支持多路摄像头、多线程推理
    跨平台:一套代码兼容 Jetson/RK3576
  2. 术语说明
    OBB:Oriented Bounding Box,旋转包围盒
    GStreamer:跨平台硬件编解码框架
    环形缓冲池:固定长度异步队列,用于模块解耦
    零拷贝:帧数据不做内存复制,直接传递指针
    透传:数据从源头到输出不修改、不丢失
Logo

一站式 AI 云服务平台

更多推荐