Mediapipe Blazepose poseclassification android 源码分析(六)——PoseClassifier.java
- PoseClassifier.java
作用:Classifies Pose based on given PoseSamples. 基于pose的示例给pose分类。
思想:KNN
主要参数:MAX_DISTANCE_TOP_K = 30
;MEAN_DISTANCE_TOP_K = 10
;
AXES_WEIGHTS = PointF3D.from(1, 1, 0.2f)
因为Z轴相对于X和Y对精度影响小,所以所占权重默认0.2;
所有参数均可人为设置
- 方法:
- classify(Pose pose)
public ClassificationResult classify(Pose pose) {
return classify(extractPoseLandmarks(pose));
}
首先是要对传入的Pose进行extractPoseLandmarks(Pose pose)
把Pose类转换为PointF3D的List,然后调用classify(List<PointF3D> landmarks)
- extractPoseLandmarks(Pose pose)
private static List<PointF3D> extractPoseLandmarks(Pose pose) {
List<PointF3D> landmarks = new ArrayList<>();
for (PoseLandmark poseLandmark : pose.getAllPoseLandmarks()) {
landmarks.add(poseLandmark.getPosition3D());
}
return landmarks;
}
把Pose类转换为PointF3D的List
- classify(List<PointF3D> landmarks)
这部分是核心代码
public ClassificationResult classify(List<PointF3D> landmarks) {
ClassificationRes