public final class PoseDetector

  1. Object
  2. PoseDetector

ImplementsAutoCloseable, VisionAnalyzer<Pose>

Locates body joints, for rep counting, form feedback, or gesture input.

Counting arm raises from the live camera:

VisionCameraView<Pose> view =
        new VisionCameraView<Pose>(new PoseDetector());
view.setListener(new VisionPipelineListener<Pose>() {
    private boolean wasUp;

    public void result(Pose pose, VisionImage source) {
        Pose.Landmark wrist = pose.getLandmark(PoseLandmarks.RIGHT_WRIST);
        Pose.Landmark shoulder =
                pose.getLandmark(PoseLandmarks.RIGHT_SHOULDER);
        if (wrist == null || shoulder == null
                || wrist.getConfidence() < 0.6f) {
            return;
        }
        // Y grows downwards, so the wrist being "above" the shoulder is a
        // smaller Y.
        boolean up = wrist.getPosition().getY()
                < shoulder.getPosition().getY();
        if (up && !wasUp) {
            reps++;
            repLabel.setText(String.valueOf(reps));
        }
        wasUp = up;
    }

    public void error(Throwable error) {
        Log.e(error);
    }
});

Backends detect different subsets of the skeleton, so look joints up by name with Pose.getLandmark(String) and handle null rather than indexing a fixed array. PoseLandmarks holds the names.

Constructors

public PoseDetector()Creates an analyzer using the platform default backend and options.
public PoseDetector(VisionOptions options)Creates a reusable analyzer with explicit backend and result options.

Methods

public final synchronized boolean isSupported()Tests the exact feature/backend pair configured for this analyzer.
public final synchronized AsyncResource<Pose> process(VisionImage image)Starts one analysis using the retained native backend.
public final synchronized void close()Idempotently releases the retained native backend.

Inherited methods

Constructor details

PoseDetector

public PoseDetector()
Creates an analyzer using the platform default backend and options.

PoseDetector

public PoseDetector(VisionOptions options)
Creates a reusable analyzer with explicit backend and result options.

Parameters

options VisionOptions
configuration captured by this analyzer; null uses defaults

Method details

isSupported

public final synchronized boolean isSupported()
Tests the exact feature/backend pair configured for this analyzer.

Returns

whether this analyzer’s feature/backend is available and open

process

public final synchronized AsyncResource<Pose> process(VisionImage image)
Starts one analysis using the retained native backend.

Parameters

image VisionImage
immutable encoded or raw input

Returns

asynchronous typed result

close

public final synchronized void close()
Idempotently releases the retained native backend.