AI 视觉检测 · 实时报警

AI 驱动的草坪电子围栏防踩踏系统

基于 YOLOv8 深度学习视觉检测,实时识别人员与动物闯入行为。自定义多边形围栏边界,入侵自动报警截图存证。

实时监控
🛡️ 围栏
Device frame
📊 入侵记录
2026-07-24 14:30:22
🎯 人
2026-07-24 15:10:05
🎯 猫 + 狗
滑动查看更多 →
Device frame

核心能力

三大 AI 能力守护草坪安全,让踩踏无处遁形

🎯

AI 视觉检测

YOLOv8 深度学习模型实时识别行人、猫、狗三类目标,置信度阈值可调,检测精准高效。

📐

自定义围栏区域

鼠标点击即可在画面上绘制任意多边形电子围栏,Ray Casting 算法精确判定目标是否越界。

🚨

实时报警与存证

目标闯入时立即触发声光报警,自动截图保存证据,完整记录每次入侵的时间与目标类型。

How It Works

四步守护草坪安全

从部署到报警,简单四步完成智能防护。USB 摄像头对准草坪区域,或使用电脑自带摄像头直接体验。

1连接摄像头对准草坪区域
2在画面上绘制多边形围栏保护区
3YOLOv8 实时检测人/猫/狗并判定越界
4入侵时自动报警、截图并记录时间与类型
实时画面
🚨 入侵警报
Device frame

实时监控面板

电脑摄像头实时采集 + 服务端 YOLOv8 AI 检测,浏览器即开即用

监控画面
🖱️ 点击「绘制围栏」后在画面上依次点击顶点,右键闭合
🚨 入侵警报!检测到目标闯入围栏区域!

🎛️ 围栏控制

已设顶点: 0

📊 实时状态

报警
✅ 安全
目标
0
入侵中
0
累计
0

📋 入侵记录

暂无入侵记录

📖 操作说明

1. 点击「启用电脑摄像头」授权摄像头
2. 点击「绘制围栏」进入绘图模式
3. 在画面上依次点击顶点
4. 右键点击完成多边形闭合

准备好守护你的草坪了吗?

YOLOv8 深度学习 + Flask 实时视频流,浏览器即开即用。支持 USB 摄像头或电脑自带摄像头。

🌿 立即体验实时监控
Technical Specification

技术原理与系统设计

草坪电子围栏 AI 智能防踩踏系统 — 完整技术架构、算法流程与参数配置说明。

📋 算法流程图

开始摄像头实时采集画面(MJPEG 推流 12 FPS)
  ↓
逐帧调用 YOLOv8n 目标检测
  ├── class=0 (person) → 人体检测
  ├── class=15 (cat)   → 猫检测
  └── class=16 (dog)   → 狗检测
  ↓
用户在视频画面上绘制电子围栏多边形(Canvas 交互,任意顶点)
  ↓
每条检测结果判断是否在围栏内(射线投射算法 / Ray Casting)
  ├── 在围栏内 → 触发报警 + 自动截图取证
  └── 不在围栏内 → 继续监测
  ↓
报警状态:
  ├── 保存带标注框的截图至 captures/ 目录
  ├── 记录入侵事件(时间 + 目标类型 + 置信度)至 records.json
  └── 3 秒冷却期防止重复报警
  ↓
前端每 2 秒轮询 /api/status + /api/records,实时更新界面结束

📦 软件基础设置信息

字段说明
功能名称Lawn Fence — 草坪电子围栏 AI 智能防踩踏系统
适用场景私人草坪、花园、农田等区域自动入侵监测,检测人/猫/狗三类目标闯入行为
开发语言Python 3.10+(后端 Flask)+ HTML5/CSS3/JavaScript(前端)
核心依赖ultralytics opencv-python flask numpy waitress
AI 模型YOLOv8n (6.5MB),COCO 预训练权重,检测 80 类目标,仅关注 person(0)/cat(15)/dog(16)
视频推流MJPEG (multipart/x-mixed-replace),12 FPS 实时视频流
部署方式systemd 服务托管 + Waitress WSGI 服务器 + nginx 反向代理

⚙️ 软件系统设计

1. 项目目录结构

lawn-fence/
  ├── backend/
  │   ├── app.py          ← Flask 主入口 + MJPEG 推流 + API 路由
  │   ├── detector.py      ← YOLOv8n 检测引擎 + 围栏判定 + 截图取证
  │   ├── camera.py           ← USB 摄像头驱动(可选)
  │   ├── yolov8n.pt          ← YOLOv8n 模型权重 (6.5MB)
  │   ├── records.json        ← 入侵记录持久化存储
  │   └── requirements.txt    ← Python 依赖清单
  ├── 前端/                ← 静态前端页面
  │   └── index.html          ← 主页面(响应式设计)
  └── captures/               ← 报警截图自动存储目录

2. MJPEG 实时视频推流引擎

基于 Flask Response(generate_frames(), mimetype='multipart/x-mixed-replace') 实现 MJPEG 推流。后台检测线程以 12 FPS 独立运行,每帧经 YOLOv8n 推理 + 围栏可视化标注后编码为 JPEG,通过线程锁安全传递给 MJPEG 流。Dummy 模式生成模拟草坪画面供无摄像头场景演示。

3. YOLOv8n 目标检测(FenceDetector 类)

模型加载:Lazy load,首次 detect() 调用时才加载 YOLO。
目标过滤:仅保留 person(0)/cat(15)/dog(16),忽略其余 77 类。
标注绘制:侵入围栏者红色标注 + 置信度,正常目标绿色标注。
围栏判定_is_inside_fence() 使用射线投射算法(Ray Casting)判断目标中心点是否在多边形内。
报警触发:任一目标入界 → alarm_active=True,3 秒冷却期。

4. 电子围栏配置(Canvas 交互 + API 持久化)

前端 Canvas 叠加在视频画面上,用户点击放置顶点,右键闭合多边形。POST /api/set_fence 将顶点坐标数组发送至后端。围栏支持任意顶点数,可凸可凹。

5. 截图取证与记录管理

自动截图_save_alarm_capture() 保存完整标注帧至 captures/ 目录。
JSON 持久化:入侵记录写入 records.json。
前端轮询:每 2 秒调 GET /api/status + GET /api/records 更新状态和日志。

🔧 参数配置

TARGET_FPS
12 FPS
检测帧率,平衡 GPU 负载与实时性
alarm_cooldown
3 秒
报警冷却时间,防止同一入侵事件重复触发
TARGET_CLASSES
{0, 15, 16}
检测目标:person + cat + dog
YOLO Model
yolov8n.pt (6.5MB)
YOLOv8n COCO 预训练目标检测权重
Waitress Port
127.0.0.1:5006
生产 WSGI 服务器监听地址
摄像头模式
--dummy / --camera 0
演示模式生成模拟画面;ID=0 使用真实 USB 摄像头

🔗 模块依赖关系

app.py (Flask 入口 + Waitress 生产服务器)
  ├── detector.py (FenceDetector 类)
  │     ├── detect()              YOLOv8n 推理 → 过滤 person/cat/dog
  │     ├── _is_inside_fence()    射线投射算法 (Ray Casting)
  │     ├── set_fence()           存储围栏顶点坐标
  │     ├── _save_alarm_capture() 报警截图 JPEG 保存
  │     ├── get_status()          返回报警状态 + 检测统计
  │     └── get_records()         返回入侵记录 JSON 列表
  ├── yolov8n.pt ──────────────── YOLOv8n 模型权重 (6.5MB)
  ├── camera.py (可选) ────────── USB 摄像头驱动
  ├── frontend/ ───────────────── 静态前端页面
  └── captures/ ───────────────── 报警截图自动存储

📡 API 接口一览

方法路径说明
GET/video_feedMJPEG 实时视频流
POST/api/set_fence设置围栏顶点坐标(JSON body: points 数组)
GET/api/status获取报警状态、检测计数、围栏顶点数
GET/api/records获取历史入侵记录列表
POST/api/detect_frame上传单帧图片做离线检测(Base64 编码)
GET/captures/<filename>查看报警截图

📚 学术支撑

本文系统引用以下学术成果与技术标准。

[1] Jocher et al. (2024)
Ultralytics YOLOv8: State-of-the-Art Object Detection. 本项目使用的实时目标检测核心框架。
[2] Shimrat (1962)
Algorithm 112: Position of Point Relative to Polygon. CACM. 围栏判定的射线投射算法原始文献。
[3] IEEE (2024)
Virtual Fencing Systems: A Survey. IEEE Sensors Journal. 电子围栏系统综述,本项目系统架构参考。
[4] Bradski (2000)
The OpenCV Library. MJPEG 视频推流与图像标注使用的核心图像处理库。
[5] Flask / Waitress (2024)
Flask Web Framework + Waitress WSGI Server. 后端 API 服务与生产级 HTTP 服务器。
[6] Haines & Taylor (2024)
MJPEG Streaming for Real-Time Video Applications. MJPEG 推流技术在实时监控系统中的最佳实践。