posefind/AGENTS.md

6.4 KiB
Raw Blame History

PoseFind 项目上下文指南

项目概述

PoseFind 是一个基于 MediaPipe 的人像姿态识别项目,专注于实现人体姿态估计和可视化。项目使用 Python 开发,主要面向计算机视觉和人机交互应用场景。

主要功能

  • 摄像头实时姿态检测
  • 图片单张/多人姿态识别
  • 33个全身姿态关键点检测
  • 姿态骨架可视化绘制

技术栈

  • 语言: Python 3.7+
  • 核心框架: MediaPipe (Google 开源的姿态估计库)
  • 图像处理: OpenCV (opencv-python)
  • 图像操作: Pillow
  • 许可证: Apache License 2.0

架构设计

项目采用面向对象设计,核心类为 PoseDetector,包含以下关键组件:

  • 双检测器模式:静态检测器(用于多人检测)和流式检测器(用于实时视频)
  • 姿态检测与绘制功能分离
  • 支持单人和多人姿态信息提取

项目结构

posefind/
├── pose_detector.py      # 主程序文件,包含 PoseDetector 类和主函数
├── requirements.txt      # Python 依赖列表
├── README.md            # 项目简介和快速开始指南
├── USAGE.md             # 详细使用说明文档
├── LICENSE              # Apache 2.0 许可证
├── test.webp            # 测试图片
├── yolov8s.onnx         # YOLOv8 模型文件(当前未使用)
├── .gitignore           # Git 忽略规则(标准 Python 项目配置)
└── AGENTS.md            # 本文件AI 助手上下文指南

构建和运行

环境准备

# 安装依赖
pip install -r requirements.txt

# 如遇网络问题,可使用国内镜像源
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

运行命令

摄像头实时检测

python pose_detector.py
  • 自动打开默认摄像头(索引 0
  • 实时显示姿态检测结果
  • q 键退出

图片检测

python pose_detector.py <图片路径>
  • 示例:python pose_detector.py test.webp
  • 显示带有姿态骨架的图片
  • 打印姿态关键点坐标信息
  • 按任意键关闭窗口

测试说明

  • 项目使用 test.webp 作为示例测试图片
  • 暂无自动化测试脚本,需手动测试功能

开发约定

代码风格

  • 注释语言: 中文(项目主要面向中文用户)
  • 文档字符串: 使用 Google 风格的 docstring
  • 类和函数命名: 遵循 PEP 8 规范,使用驼峰命名法(类名)和下划线命名法(函数/变量)
  • 代码组织: 将核心逻辑封装在类中,功能模块化

关键类和方法

PoseDetector 类

位置: pose_detector.py

核心方法:

  • __init__(): 初始化两个 MediaPipe Pose 检测器(静态和流式)
  • detect_pose(image): 单人姿态检测(流式模式,用于视频)
  • detect_poses(image): 多人姿态检测(静态模式,用于图片)
  • draw_pose(image, results, color): 绘制单个姿态骨架
  • draw_poses(image, pose_results): 绘制多个姿态骨架(不同颜色)
  • get_pose_info(results): 获取单人姿态信息
  • get_poses_info(pose_results): 获取多人姿态信息

配置参数:

  • model_complexity=1: 中等复杂度模型
  • min_detection_confidence=0.5: 最小检测置信度
  • min_tracking_confidence=0.5: 最小追踪置信度

主函数

  • run_webcam(): 摄像头检测模式的主循环
  • run_image(image_path): 图片检测模式
  • main(): 程序入口,根据命令行参数选择运行模式

依赖版本

opencv-python==4.8.1.78
mediapipe==0.10.8
Pillow==10.1.0

多人检测说明

  • MediaPipe Pose 主要优化单人检测
  • 静态模式下可以尝试检测多个人物
  • 每个人物使用不同颜色区分(绿、红、蓝、黄、紫、青)
  • 对于复杂多人场景,检测结果可能不完整

常见问题处理

  1. 摄像头无法打开: 检查摄像头占用尝试修改索引0, 1, 2...
  2. 检测效果不佳: 确保光线充足、人物完整可见、避免复杂背景
  3. 依赖安装失败: 使用国内镜像源安装
  4. 多人检测不准确: MediaPipe 局限性,可考虑集成 YOLO 等目标检测器

扩展方向建议

  • 添加姿态识别功能(站立、坐着、举手等)
  • 支持视频文件输入
  • 姿态数据保存和加载
  • 集成目标检测器实现更精确的多人检测
  • 姿态异常检测
  • 姿态轨迹跟踪

Git 工作流

分支信息

提交规范

  • 提交信息应简洁明确,说明"为什么"而非"是什么"
  • 示例:Add pose detector implementation with YOLOv8 and supporting files

忽略规则

项目使用标准 Python .gitignore,忽略以下内容:

  • Python 编译文件 (__pycache__/, *.pyc)
  • 虚拟环境 (.venv/, venv/)
  • IDE 配置 (.idea/, .vscode/)
  • 构建产物 (dist/, build/)
  • 测试覆盖率文件 (.coverage, htmlcov/)

注意事项

  1. MediaPipe 局限性: MediaPipe Pose 模型主要针对单人优化,多人检测能力有限
  2. 模型文件: 项目中包含 yolov8s.onnx 文件,但当前代码未使用,可能是未来的扩展方向
  3. 中文环境: 项目文档和注释使用中文,维护时保持一致性
  4. 跨平台: 代码支持 Windows/Linux/macOS但摄像头索引可能因系统而异
  5. 资源管理: 使用 try-finally 确保摄像头和窗口正确释放

开发工具

可用工具

  • Python (需在虚拟环境中运行)
  • Git (版本 2.45.1.windows.1)
  • FFmpeg (已安装,可用于视频处理)
  • curl (已安装)

不可用工具

  • rg (ripgrep) - 使用 search_file_content 工具替代
  • gh (GitHub CLI)
  • wget - 使用 curl 替代

Python 执行

注意:当前环境中 python 命令不可用,需要在虚拟环境中运行。项目使用 .venv 虚拟环境(已忽略)。

维护指南

修改代码时

  1. 保持中文注释和文档字符串的一致性
  2. 遵循现有的类和方法命名规范
  3. 确保资源正确释放(摄像头、窗口)
  4. 添加功能时更新相关文档USAGE.md

添加新依赖时

  1. requirements.txt 中添加具体版本号
  2. 测试在不同平台上的兼容性
  3. 更新 USAGE.md 中的环境要求部分

修复 Bug 时

  1. 先在 USAGE.md 的"常见问题"部分记录
  2. 如涉及核心逻辑,更新相关方法文档
  3. 考虑添加错误处理和用户友好的提示信息