人体姿态检测系统
| .vercel | ||
| .vscode | ||
| backend | ||
| document | ||
| frontend/src/renderer | ||
| .gitignore | ||
| config.ini | ||
| memory_config.py | ||
| README.md | ||
身体平衡评估系统
一个基于多传感器融合的身体平衡评估与分析系统,提供姿态检测、视频录制、数据采集与评估报告等功能。
系统特性
- 实时姿态检测与数据采集
- 多设备管理(摄像头、IMU、压力传感器)
- 视频录制与文件存储规范化
- 本地数据库管理与历史记录
- 静态文件HTTP访问映射
- 开发与打包环境兼容
- 数据安全:本地存储,保护用户隐私
目录结构(当前)
BodyBalanceEvaluation/
├── backend/
│ ├── main.py # AppServer 后端入口(推荐)
│ ├── app.py # 备用后端入口(历史版本)
│ ├── database.py # 数据库管理
│ ├── device_manager.py # 设备统一管理(旧版)
│ ├── check_monitor_status.py # 设备连接状态检查脚本
│ ├── build_app.py # 打包相关脚本
│ ├── config.ini # 后端配置文件(可选)
│ ├── data/ # 默认数据目录(开发环境)
│ ├── devices/
│ │ ├── camera_manager.py
│ │ ├── screen_recorder.py
│ │ ├── imu_manager.py
│ │ ├── pressure_manager.py
│ │ ├── femtobolt_manager.py
│ │ ├── device_coordinator.py
│ │ └── utils/
│ │ └── config_manager.py # 配置管理器(设备侧)
│ ├── requirements.txt # 运行依赖
│ └── requirements_build.txt # 打包依赖
├── frontend/
│ └── src/renderer/ # Electron + 前端资源
├── config.ini # 顶层配置(可选,优先就近)
├── data/
│ └── patients/ # 示例数据目录
└── README.md
安装与运行
后端(开发)
- 创建并激活虚拟环境
python -m venv venvvenv\Scripts\activate(Windows)
- 安装依赖
pip install -r backend/requirements.txt
- 启动后端服务(推荐入口)
python backend/main.py --host 0.0.0.0 --port 5000 --debug
说明:main.py 使用 AppServer 类,启动时会初始化 ConfigManager、数据库管理器、设备协调器及相关路由。
前端与打包
- Electron 在
frontend/src/renderer/main/main.js中启动本地静态服务器,并在打包环境下拉起后端可执行文件:resources/backend/BodyBalanceBackend/BodyBalanceBackend.exe
- 前端调用后端 API 与静态文件路由相互独立。
配置说明
系统配置由设备侧 ConfigManager 统一读取(backend/devices/utils/config_manager.py)。常用节:
[FILEPATH]path:文件存储根目录。支持绝对路径或相对路径。- 绝对路径示例:
D:/BodyCheck/file - 相对路径示例:
data或../data(相对main.py所在目录或打包exe同级目录)
- 绝对路径示例:
[DATABASE]path:数据库文件路径(支持相对/绝对)。
示例(backend/config.ini 或项目根 config.ini):
[FILEPATH]
path = D:/BodyCheck/file
[DATABASE]
path = data/body_balance.db
静态文件访问
- 后端提供静态文件映射路由(
backend/main.py):GET /<path:filename>- 访问路径会在服务端拼接至
[FILEPATH].path指定的存储根目录下。 - 例如:配置
path = D:/BodyCheck/file,则访问http://host:port/202508190001/20251014111329/video_111331358/screen.mp4会映射到D:/BodyCheck/file/202508190001/20251014111329/video_111331358/screen.mp4。
- 安全校验:
- 路径规范化与越界拦截(拒绝
..、绝对路径、UNC 路径)。 - 仅允许访问
[FILEPATH].path根目录内的资源。 - 视频类文件设置正确的
Content-Type与Accept-Ranges(流式播放友好)。
- 路径规范化与越界拦截(拒绝
注:如果需要固定前缀路由(如 /data/<path:filename>),可以在 main.py 中将路由前缀改为 /data,逻辑保持不变。
录制与数据存储
screen_recorder.py在类初始化时注入ConfigManager,并在录制/采集流程中统一从[FILEPATH].path读取文件根目录。- 目录规范建议:
<root>/<patient_id>/<session_id>/<timestamp>,业务层可按需要扩展子目录与文件命名。 - 当配置为相对路径时,开发环境相对
backend/目录,打包环境相对exe同级目录。
主要 API(摘录)
GET /health:健康检查POST /api/detection/start:开始检测(创建会话)POST /api/detection/<session_id>/stop:停止检测并保存录制内容GET /<path:filename>:静态文件映射至[FILEPATH].path
说明:更多设备管理、状态广播与检测过程接口,参见 backend/main.py 内路由与 SocketIO 事件注册。
开发建议
- 统一通过
ConfigManager访问配置,避免硬编码路径。 - 读取与写入文件路径时使用
os.path.normpath/abspath/realpath进行规范化。 - 对外提供文件访问统一通过静态路由,确保安全校验与越界防护。
- 开发与打包环境下路径基础目录不同,尽量通过配置与规范化处理屏蔽差异。
数据安全
- 所有数据采用本地存储,避免敏感信息外泄。
- 静态文件访问包含越界保护,限制访问至配置的存储根目录内。
- 建议对患者身份信息进行匿名化处理(如ID映射)。