- README.md / README.txt 新增初次部署章节:前置条件(JDK 17 / SDK 34 / Gradle 8.9)、 获取代码与本地配置(local.properties 不入仓)、Debug/Release 构建、装到手机与相机权限、 连接配置(只连 Windows 客户端,默认 8765 / /pose)、第一次跑通、自检清单、常见问题 - 单测数量按实际(30 项)修正 - 三库同源契约:':=' 写法修回、去掉真实 MariaDB 版本串 - 全文去除易被 Gitea 判为「模棱两可 Unicode」的字符 - 本机 JDK 路径与内网示例地址改占位符 / RFC 5737 文档网段
1.6 KiB
1.6 KiB
T-AND-003 MediaPipe Pose 端侧推理
- 状态:done
- 依赖:T-AND-002
目标
用 MediaPipe Tasks Vision 在设备本地做姿态推理,输出 33 个归一化关键点。
load
DSH.md
contracts/skeleton-topology.md # 锚点:1 33 点、4 坐标系
app/src/main/java/com/opendance/studio/pose/PoseDetector.kt
交付物
pose/PoseDetector.kt + app/src/main/assets/pose_landmarker_lite.task(5.7 MB)。
关键实现
| 项 | 说明 |
|---|---|
| 运行模式 | LIVE_STREAM + detectAsync,不阻塞相机线程 |
| 模型 | pose_landmarker_lite.task(随 APK 分发,noCompress "task" 保证可读) |
| 置信度阈值 | detection / presence / tracking 均 0.5 |
| 背压 | busy 标志:上一帧仍在推理时直接丢弃新帧并计数,不排队 |
| 时间戳 | 单调递增校正(MediaPipe 要求严格递增) |
| 缺失点 | 置信度置 0、坐标归零,接收端按契约插值 |
坐标与镜像语义
- 发送未镜像的原始 MediaPipe 坐标(契约 4)
- 是否镜像由帧头
flags.bit0声明,接收端据此决定如何还原 - 叠加层绘制时才取
1 - x,与前置摄像头预览的镜像观感一致
这保证了同一份关键点数据在「镜像预览」与「真实左右」两种解释下都不会歧义。
上半身模式
upperBodyOnly = true 时,髋部及以下点置信度置 0 并置 flags.bit2,
接收端会插值。用于带宽/算力不足时降级。
验收
assembleDebug 通过;运行页在真机上可看到骨架叠加层(见 tasks/009)。