🧍♂️ YOLOv8-Pose 实时姿态检测系统
⭐ 如果这个项目对你有帮助,欢迎给个 Star!
基于 YOLOv8-pose 的图形化姿态估计工具,支持图片、摄像头、视频文件输入,实时检测人体关键点、绘制骨架,并识别正常坐姿、低头、驼背、身体侧倾等精细姿态。

📌 功能特点
- 🖼️ 多种输入源:图片、摄像头、本地视频文件(.mp4/.avi/.mov)
- 🧠 高精度姿态估计:基于 YOLOv8-pose,支持 17 个 COCO 关键点
- 🎯 精细坐姿分析:
- 正常坐姿
- 低头(颈部弯曲角度)
- 驼背(躯干前倾角度)
- 左侧斜 / 右侧斜(肩膀高度差)
- 🖥️ 友好 GUI:Tkinter 界面,可实时调节置信度、IOU、姿态判断阈值
- 🚀 实时性能:摄像头模式下可流畅运行(30fps+)
- 👥 多人检测:支持画面中多个人体同时识别与标注
🖼️ 界面预览
┌─────────────────────────────────────────────────┐
│ [Load Model] Model loaded Conf: ███░░ │
│ Tilt: ██░░░ Hunch: ██░░░ Bowed: ██░░░ │
│ [Open Image] [Open Video] [Start Camera] [Stop]│
├─────────────────────────────────────────────────┤
│ │
│ 【实时视频/图片显示区域】 │
│ │
├─────────────────────────────────────────────────┤
│ 2 person(s) detected │
│ Status: Camera started │
└─────────────────────────────────────────────────┘
实际运行时会显示每个人体的关键点、骨架和姿态标签。
📦 安装与依赖
环境要求
- Python 3.8 或更高版本
- 建议使用 Anaconda 或虚拟环境
安装步骤
-
克隆仓库
git clone https://github.com/aaron888hacker/-yolov8-.git
cd -yolov8-
-
安装依赖包
pip install -r requirements.txt
requirements.txt 内容:
ultralytics>=8.0.0
opencv-python>=4.5.0
numpy>=1.21.0
Pillow>=9.0.0
-
下载预训练模型
将 yolov8n-pose.pt(或 yolov8s-pose.pt / yolov8m-pose.pt)放入项目根目录。
下载地址:Ultralytics Assets
🚀 快速开始
-
运行 GUI
python pose_gui.py
-
加载模型:点击 Load Model,等待提示“Model loaded”。
-
选择输入源:
- 图片:
Open Image → 选择一张包含人物的图片
- 视频文件:
Open Video → 选择 .mp4/.avi 文件
- 摄像头:
Start Camera → 打开默认摄像头
-
调节阈值(实时生效):
Conf:检测置信度(降低可识别更小/模糊的人体)
Tilt thresh:身体侧倾判断灵敏度
Hunch (°):驼背角度阈值(大于此值判为驼背)
Bowed (°):低头角度阈值(大于此值判为低头)
-
停止:点击 Stop 关闭当前视频/摄像头。
⚙️ 配置与自定义
修改默认模型
在 PoseGUI.__init__ 中更改 self.model_path:
self.model_path = 'yolov8m-pose.pt' # 改用 medium 模型提升精度
提高小目标检测能力
在 PoseEstimator.process_frame 中增加 imgsz 参数:
results = self.model.predict(..., imgsz=1280) # 默认640
注意:更高的分辨率会增加 GPU/CPU 负载。
添加新的姿态类别
修改 PoseEstimator.analyze_sitting_pose 的决策逻辑,或扩展 determine_pose 的返回值。
启用中文标签
将 fine_pose 字符串改为中文(如 '低头'),并确保使用支持中文的字体(如 times.ttf)。在 process_frame 中可替换 cv2.putText 为 PIL 绘图(参考代码注释)。
📂 文件结构
.
├── pose_gui.py # 主程序(GUI + 姿态估计核心)
├── yolov8n-pose.pt # 预训练模型
├── requirements.txt # 依赖列表
├── README.md # 本文件
📊 姿态标签说明
| 标签(英文) |
含义 |
判断依据 |
| standing |
站立 |
膝盖伸直,髋部高于膝盖 |
| sitting |
坐姿(标准) |
膝盖弯曲,髋部高于膝盖 |
| sitting_low |
低坐姿 |
膝盖弯曲且位置较低 |
| leaning |
微屈/倚靠 |
膝盖角度在125~160之间 |
| normal sitting |
正常坐姿 |
坐姿且各角度在正常范围内 |
| bowed head |
低头 |
颈部弯曲角度 > 阈值 |
| hunchback |
驼背 |
躯干前倾角度 > 阈值 |
| left tilt |
身体左侧斜 |
右肩高于左肩 |
| right tilt |
身体右侧斜 |
左肩高于右肩 |
| squat |
深蹲 |
膝盖角度 < 90° |
| unknown |
无法判断 |
关键点置信度不足 |
🧪 测试环境
- OS: Windows 10/11, Ubuntu 20.04
- Python: 3.11.4
- GPU: NVIDIA RTX 3060 (可选,CPU 也可运行)
- 摄像头: 普通 USB 摄像头 / 笔记本内置摄像头
🤝 贡献指南
欢迎提交 Issue 和 Pull Request。如果您想添加新功能(如姿态记录、报警提示等),请先开 Issue 讨论。
📄 许可证
本项目采用 MIT 许可证。
🙏 致谢
Star History
📧 联系方式
如有问题或建议,请通过 GitHub Issues 反馈。
⭐ 如果这个项目对你有帮助,欢迎给个 Star!
评论