摘要:把 D:\project
这套工程直接跑起来:安装 Python / VS Code → 一键运行 → 用 PyInstaller 打包为 EXE 分发。文末含常见问题与命令速查。
MediaPipe Pose 模型应用介绍:让 PLC 读懂人体动作:MediaPipe Pose 在工业安全监控中的应用
参考视频
一、项目目录结构(放在 D:\project
)
将下载好的 project
文件夹直接放到 D 盘根目录。结构与作用如下:
build/
:PyInstaller 打包时产生的临时缓存,可删。
dist/
:打包后的成品目录(EXE 与依赖)。
mp_env/
:项目自带的Python 虚拟环境(内含依赖与模型)。
关键文件:mp_env/pyvenv.cfg
,其中home = D:\Python310
,务必与实际 Python 安装位置和版本一致(3.10.11)。
TestVideo/
:测试视频(无摄像头时可直接验证)。
安装/
:本地安装包集合(如 Python、VS Code 安装程序)。
logo.ico
:程序图标(PyInstaller 打包时使用,可替换)。
mediaPipe_pose_gui.py
:主程序(界面逻辑+姿态判定+视频流/Modbus 接口)。
mediaPipe_pose_gui.spec
:PyInstaller 打包配置(保证一键复现相同产物)。
project.code-workspace
:VS Code 工作区文件(一键打开全项目)。
requirements.txt
:依赖清单(重建虚拟环境时用)。
命令.txt
:常用命令备忘(激活/运行/打包等)。
二、环境安装(仅首次在这台电脑)
1)安装 Python 3.10.11
- 运行
安装/python-3.10.11-amd64_安装到D盘根目录.exe
- 勾选底部 Add python.exe to PATH → Customize installation → Next
- 将 Customize install location 改为
D:\Python310
→ Install
- 运行
2)验证 Python
开始菜单搜索 cmd,输入:
python --version
看到 Python 3.10.11
即成功(D 盘出现 D:\Python310
)。
3)安装 VS Code(中文)
- 运行
安装/VSCodeUserSetup-x64-1.103.0.exe
,默认安装 - 打开 VS Code → 左侧“扩展”→ 搜索 Chinese → 安装 简体中文 → 按提示重启
- 运行
4)打开工作区
VS Code:文件 → 从文件打开工作区… → 选择 D:\project\project.code-workspace
→ 选择 是,信任。
三、运行(源码方式)
- VS Code 顶部:终端 → 新建终端(默认路径应为
D:\project
)。 - 首次放开 PowerShell 脚本限制:
- VS Code 顶部:终端 → 新建终端(默认路径应为
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass
- 激活虚拟环境:
- 激活虚拟环境:
.\mp_env\Scripts\activate
看到提示符出现 (mp_env)
前缀即成功。
- 启动主程序:
- 启动主程序:
python mediaPipe_pose_gui.py
测试建议
- 在界面中选择“视频文件”,挑选
TestVideo
里的样片 → 点击 开始识别。
- 在界面中选择“视频文件”,挑选
- 若能看到骨架与左上角中文状态,即运行正常。
四、打包为 EXE(部署分发)
适合非开发电脑使用:复制 EXE(及其同目录依赖)即可运行。
- 确保当前终端已激活
(mp_env)
。 - 一键打包:
- 确保当前终端已激活
pyinstaller --clean mediaPipe_pose_gui.spec
等待结束,出现 Build complete!(或无错误退出)即成功。
- 到
dist/
查看产物:
- 到
- 文件夹模式:
dist\mediaPipe_pose_gui\mediaPipe_pose_gui.exe
- 文件夹模式:
- 单文件模式:
dist\mediaPipe_pose_gui.exe
- 单文件模式:
程序图标来自根目录 logo.ico
,可替换为自有图标。
五、常见问题(FAQ)
Q1:激活虚拟环境失败?
A:多半是 mp_env/pyvenv.cfg
的 home
与实际 Python 路径不一致。请确保 Python 安装在 D:\Python310
,或重建虚拟环境并执行:
pip install -r requirements.txt
Q2:PowerShell 提示脚本被禁用?
A:若 CurrentUser
受限,可用进程级临时放开:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
六、常用命令速查
# 第一次(或策略被重置)
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass
# 进入项目目录
cd D:\project
# 激活虚拟环境
.\mp_env\Scripts\activate
# 运行
python mediaPipe_pose_gui.py
# 打包为 EXE
pyinstaller --clean mediaPipe_pose_gui.spec
七、举手与跌倒算法说明
在本项目中,我们通过 MediaPipe Pose 实时检测人体姿态,并根据关键点的位置判断用户的动作状态。以下是 举手 和 跌倒 动作的算法解释,并提供如何根据需求修改判断逻辑的示例。
1. 跌倒判断算法
跌倒的判断逻辑基于 鼻子位置 和 脚踝位置 之间的垂直距离来实现。具体思路如下:
算法逻辑:
在正常情况下,鼻子和脚踝的高度差应该大于一定的阈值(例如 0.15),表示用户站立或坐着。
如果鼻子和脚踝的高度差小于这个阈值(例如 0.15),则判断为跌倒。
代码实现:
如何修改判断标准:
阈值调整:
if abs(nose_y - ankle_y) < 0.15:
中的0.15
为判断“跌倒”的阈值。如果你发现该值对某些情况下判断不准确,可以根据实际情况调整。更多特征:你还可以根据身体其他关节的相对位置(如肩膀、膝盖等)来进一步优化跌倒检测。例如,如果下半身的关节和上半身的距离也接近,可以更准确地判断是否为跌倒。
2. 举手判断算法
举手的判断逻辑基于手腕和肩膀之间的相对位置关系来实现。具体思路如下:
算法逻辑:
判断左手或右手是否举起:若任一手腕高于其同侧肩膀或鼻子,则认为用户“举手”。
为了增加判断的准确性,通常会判断肩膀与手腕的相对高度差。
代码实现:
如何修改判断标准:
阈值调整:
l_wrist.y < l_shoulder.y - 0.05
中的0.05
和nose.y - 0.1
中的0.1
是用于判断“举手”的高度阈值。如果你发现该值不适用于某些场景,可以调整这些值,使判断更加准确。更多判断条件:如果需要,可以添加更多的判断条件。例如,可以根据手腕和肩膀之间的横向距离来判断手是否真正“举起”,而不仅仅是比较高度。
3. 总结与修改指导
跌倒判断:根据鼻子和脚踝的高度差来判断跌倒。你可以通过调整阈值来优化判断。
举手判断:根据手腕与肩膀的相对高度关系来判断举手。可以调整阈值、增加更多的判断条件来提高准确性。
如果你希望判断其他动作(如蹲下、站立、跑步等),你可以根据身体各部位的相对位置关系,定义类似的算法。MediaPipe Pose 提供了33个关键点,你可以灵活运用这些关键点的信息来判断更复杂的动作。
提示:修改算法时,记得通过实际测试数据调整阈值,确保逻辑在不同场景下的适用性。
八、版本与维护建议
- Python:固定使用 3.10.11,避免版本漂移造成依赖冲突。
- 依赖:如需升级,先在测试机重建虚拟环境并
pip install -r requirements.txt
验证;确认稳定后再更新团队包。
- 依赖:如需升级,先在测试机重建虚拟环境并
- 打包一致性:统一使用
mediaPipe_pose_gui.spec
打包,确保所有人产物相同。
- 打包一致性:统一使用
暂无评论内容