# Class Pose

java.lang.Object
com.codename1.ai.vision.Pose

public final class Pose extends Object

Portable body-pose result. Landmark coordinates use the normalized top-left-origin image space defined by `VisionPoint`; confidence is in the range 0..1.

Common backend-neutral names include `nose`, `leftEye`, `rightEye`, `leftEar`, `rightEar`, and the `left`/`right` forms of `Shoulder`, `Elbow`, `Wrist`, `Hip`, `Knee`, and `Ankle`. A backend can additionally report finer eye, mouth, finger, heel, foot, `neck`, or `root` landmarks using the same lower-camel-case convention. `PoseLandmarks` holds those names as constants.

    PoseDetector detector = new PoseDetector();
    detector.process(VisionImage.fromCameraFrame(frame)).ready(pose -> {
        Pose.Landmark wrist = pose.getLandmark(PoseLandmarks.RIGHT_WRIST);
        Pose.Landmark shoulder = pose.getLandmark(PoseLandmarks.RIGHT_SHOULDER);
        boolean raised = wrist != null && shoulder != null
                && wrist.getConfidence() > 0.6f
                && wrist.getPosition().getY() < shoulder.getPosition().getY();
        repsLabel.setText(raised ? "up" : "down");
    });

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static final class`
  `Pose.Landmark`
  One named body joint with normalized position and confidence.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Pose(Pose.Landmark[] landmarks)`
  Creates a pose without backend metadata.
  `Pose(Pose.Landmark[] landmarks, VisionMetadata metadata)`
  Creates a pose with backend diagnostics.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Pose.Landmark`
  `getLandmark(String name)`
  Looks up one named joint.
  `Pose.Landmark[]`
  `getLandmarks()`
  `VisionMetadata`
  `getMetadata()`

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### Pose

    public Pose(Pose.Landmark[] landmarks)
    Creates a pose without backend metadata.
    Parameters:
      `landmarks` - detected named body landmarks, defensively copied

  - ### Pose

    public Pose(Pose.Landmark[] landmarks, VisionMetadata metadata)
    Creates a pose with backend diagnostics.
    Parameters:
      `landmarks` - detected named body landmarks, defensively copied
      `metadata` - backend details, or `null`

- ## Method Details

  - ### getLandmark

    public Pose.Landmark getLandmark(String name)

    Looks up one named joint.

    Backends detect different subsets of the skeleton, so a `null` return means "this backend did not report that joint for this frame", not "unsupported". Check `Pose.Landmark.getConfidence()` before trusting a position.

    Parameters:
      `name` - one of the `PoseLandmarks` constants
    Returns:
      the detected joint, or `null` when it was not reported

  - ### getLandmarks

    public Pose.Landmark[] getLandmarks()
    Returns:
      defensive copy of detected body landmarks

  - ### getMetadata

    public VisionMetadata getMetadata()
    Returns:
      backend metadata, or `null` when manually constructed