区域入侵rk3576

luanshaofeng 894d757497 docs: 文档类移至 docs 目录,新增 README 1 týždeň pred
config 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
deploy 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
docs 894d757497 docs: 文档类移至 docs 目录,新增 README 1 týždeň pred
include 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
models 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
scripts 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
src 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
web 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
.gitignore 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
CMakeLists.txt 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
README.md 894d757497 docs: 文档类移至 docs 目录,新增 README 1 týždeň pred
build.sh 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
kill.sh 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
libsqlite3-dev_3.40.1-2+deb12u2_arm64.deb 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
logo.ico 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
logo.png 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
start.sh 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
sync_build.sh 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred
zone_alarm.service 479bd2e36a v2.0 初始版本管理: RK3576 电子围栏报警系统 1 týždeň pred

README.md

ZoneAlarm - 车辆检测电子围栏系统

基于 RK3576 NPU 的边缘计算电子围栏报警系统:多路 RTSP 摄像头视频接入,YOLO 目标检测 + NPU 推理,目标进入用户自定义电子围栏时触发网络继电器(声光报警器、警示灯等)并截图存档,提供 Web 平台进行实时预览、围栏绘制与报警查询。

功能特性

  • 多路视频接入:最多 8 路 RTSP 拉流(MPP 硬解 H.264/H.265),通道可 Web 热插拔增删改
  • AI 检测:RKNN NPU 推理(YOLOv5/v8 int8 模型),NMS 解析,报警类别可配置(车辆等)
  • 电子围栏:每路视频支持多个任意多边形围栏,目标入侵即触发;Web 端绘制并持久化
  • 继电器控制:智嵌物联网络继电器(TCP ASCII 协议),支持脉冲、周期闪烁、DI 输入联动
  • 报警策略:脉冲 + 回合上限 + 重新武装(防抖动),每次动作留截图证据
  • Web 平台:登录会话/MJPEG 实时预览/围栏绘制/通道管理/报警与动作历史查询
  • 数据管理:SQLite 报警历史 + 截图存档,按保留天数自动清理
  • 运维:systemd 服务、开机自启、定时重启、版本化部署包

技术栈

组件 说明
C++17 / CMake 编译语言与构建系统
OpenCV 图像处理、JPEG 编码、绘图
RKNN Rockchip NPU 推理运行时
MPP Rockchip 视频硬解码
FFmpeg RTSP 协议拉流
cpp-httplib / nlohmann-json Web 服务与 JSON
SQLite 报警历史存储
HTML/JS Web 前端(MJPEG 预览)

项目结构

zone_alarm/
├── src/                 # 源码
│   ├── main.cpp         # 主程序:初始化、主循环、API 注册
│   ├── rtsp_capture.*   # RTSP 拉流 + MPP 硬解(每通道一线程,断线重连)
│   ├── rga_processor.*  # NV12→RGB 转换与 letterbox 缩放
│   ├── yolo_detector.*  # RKNN 推理 + 后处理
│   ├── fence_engine.*   # 围栏管理与射线法判定
│   ├── relay_ctrl.*     # 网络继电器控制(持久 TCP、轮询、脉冲/周期模式)
│   ├── alarm_history.*  # 截图与报警历史(SQLite,异步写盘)
│   └── web_server.*     # HTTP 服务(登录会话、MJPEG、路由)
├── include/             # 第三方头文件(httplib、json、rknn_api)
├── config/              # 配置文件(config.json / fences.json)
├── web/                 # Web 前端(index.html / login.html)
├── models/              # RKNN/ONNX/PT 模型
├── scripts/             # 模型导出脚本(export_onnx.py)
├── docs/                # 文档(继电器控制手册、开发功能汇总表)
├── deploy/              # 部署脚本(打包 install.sh / pack.sh)
├── data/                # 运行数据(alarms.db / screenshots,不入库)
└── zone_alarm.service   # systemd 服务文件

配置说明(config/config.json)

项 默认值 说明
rtsp - RTSP 通道列表(id/name/url),Web 端可热改
model_path yolov5s_rk3576_int8.rknn RKNN 模型路径
input_size 640 模型输入尺寸
conf_thresh / nms_thresh 0.35 / 0.45 置信度与 NMS 阈值
skip_frames 3 抽帧推理间隔(每 N+1 帧推断一次)
alarm_classes 车辆类别列表 触发报警的检测类别
web_port / web_auth 8080 / admin Web 端口与登录凭据(登录后可改密)
fence_file config/fences.json 围栏配置文件
alarm_retention_days 30 报警历史保留天数
auto_reboot 关闭 定时重启(周期/日期时间)
relay 192.168.1.253:1030 继电器主机/端口/地址、pulse_sec 脉冲、rearm_sec 重新武装、alarm_max_sec 回合上限、di_bindings 输入联动、aliases 通道别名、y_config 输出模式

构建与运行

# 编译(自动解包项目内 SQLite 开发包到 .deps/)
./build.sh

# 运行(校验模型与配置后启动)
./start.sh

# 前台调试(可指定配置路径)
./build/zone_alarm [config/config.json]

工作目录要求:程序按相对路径读取 config/、web/、data/、models/,必须在项目根目录启动。

部署到目标机

# 开发机打包(自动编译、收集运行库、生成版本号与 CHANGELOG)
bash deploy/pack.sh

# 拷贝到目标机
scp deploy/zone_alarm_v2.0_*_*.tar.gz root@目标机:/tmp/

# 目标机安装(安装到 /opt/zone_alarm,注册 systemd,开机自启)
cd /tmp && tar xzf zone_alarm_v2.0_*.tar.gz
cd zone_alarm_v2.0_* && sudo bash install.sh

可选环境变量(install.sh):ZA_PORT=80 Web 端口、ZA_INSTALL_DIR=/opt/zone_alarm 安装目录、ZA_SKIP_SERVICE=1 跳过注册服务。

Web 平台

访问 http://<设备IP>:8080(默认账号 admin/admin,登录后可修改密码):

  • 实时预览:各通道 MJPEG 画面,叠加围栏与检测框,报警目标红色高亮
  • 围栏配置:绘制/编辑多边形围栏,绑定触发继电器通道
  • 继电器面板:输出通道手动开合、周期闪烁模式、输入联动绑定、运行状态与动作历史
  • 通道管理:增删改 RTSP 通道、连通性测试
  • 报警查询:按时间/通道查询报警记录与截图,支持删除与清空
  • 系统设置:抽帧间隔、置信度、保留天数、定时重启、立即重启

systemd 服务

systemctl status zone_alarm     # 状态
journalctl -u zone_alarm -f     # 日志
systemctl restart zone_alarm    # 重启

版本

  • v2.0(2026-09-03):当前版本。RK3576 NPU 推理 + MPP 硬解、电子围栏、继电器联动、Web 平台、SQLite 报警史