|
|
hace 1 semana | |
|---|---|---|
| config | hace 1 semana | |
| deploy | hace 1 semana | |
| docs | hace 1 semana | |
| include | hace 1 semana | |
| models | hace 1 semana | |
| scripts | hace 1 semana | |
| src | hace 1 semana | |
| web | hace 1 semana | |
| .gitignore | hace 1 semana | |
| CMakeLists.txt | hace 1 semana | |
| README.md | hace 1 semana | |
| build.sh | hace 1 semana | |
| kill.sh | hace 1 semana | |
| libsqlite3-dev_3.40.1-2+deb12u2_arm64.deb | hace 1 semana | |
| logo.ico | hace 1 semana | |
| logo.png | hace 1 semana | |
| start.sh | hace 1 semana | |
| sync_build.sh | hace 1 semana | |
| zone_alarm.service | hace 1 semana |
基于 RK3576 NPU 的边缘计算电子围栏报警系统:多路 RTSP 摄像头视频接入,YOLO 目标检测 + NPU 推理,目标进入用户自定义电子围栏时触发网络继电器(声光报警器、警示灯等)并截图存档,提供 Web 平台进行实时预览、围栏绘制与报警查询。
| 组件 | 说明 |
|---|---|
| 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 服务文件
| 项 | 默认值 | 说明 |
|---|---|---|
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 跳过注册服务。
访问 http://<设备IP>:8080(默认账号 admin/admin,登录后可修改密码):
systemctl status zone_alarm # 状态
journalctl -u zone_alarm -f # 日志
systemctl restart zone_alarm # 重启