Class Face
java.lang.Object
com.codename1.ai.vision.Face
Portable face observation.
Euler angles are expressed in degrees. Bounds and landmark points use
the normalized, top-left-origin coordinate space defined by
VisionRect and VisionPoint.
Not every backend fills in every field. getSmilingProbability()
and getTrackingId() return a negative value when the backend does
not expose them -- Apple Vision reports neither -- and a landmark the
backend could not locate is absent from the map. Test for those rather than
assuming a complete observation.
FaceDetector detector = new FaceDetector();
detector.process(VisionImage.encoded(jpeg)).ready(faces -> {
for (Face face : faces) {
Rectangle box = face.getBounds().toBounds(photoLabel);
if (face.getSmilingProbability() > 0.7f) {
Log.p("smiling face at " + box);
}
}
}).except(error -> Log.e(error));
-
Constructor Summary
ConstructorsConstructorDescriptionFace(VisionRect bounds, Map<String, VisionPoint> landmarks, float yaw, float pitch, float roll, float smilingProbability, int trackingId) Creates a detected face without backend metadata.Face(VisionRect bounds, Map<String, VisionPoint> landmarks, float yaw, float pitch, float roll, float smilingProbability, int trackingId, VisionMetadata metadata) Creates a detected face with backend diagnostics. -
Method Summary
Modifier and TypeMethodDescriptiongetLandmark(String name) Looks up one named landmark.floatgetPitch()floatgetRoll()floatintfloatgetYaw()
-
Constructor Details
-
Face
public Face(VisionRect bounds, Map<String, VisionPoint> landmarks, float yaw, float pitch, float roll, float smilingProbability, int trackingId) Creates a detected face without backend metadata.- Parameters:
bounds- face bounds in the oriented image coordinate spacelandmarks- named feature points, defensively copiedyaw- horizontal Euler angle in degreespitch- vertical Euler angle in degreesroll- in-plane Euler angle in degreessmilingProbability- smile confidence, or a negative value when unavailabletrackingId- stable streaming id, or a negative value when unavailable
-
Face
public Face(VisionRect bounds, Map<String, VisionPoint> landmarks, float yaw, float pitch, float roll, float smilingProbability, int trackingId, VisionMetadata metadata) Creates a detected face with backend diagnostics.- Parameters:
bounds- face bounds in the oriented image coordinate spacelandmarks- named feature points, defensively copiedyaw- horizontal Euler angle in degreespitch- vertical Euler angle in degreesroll- in-plane Euler angle in degreessmilingProbability- smile confidence, or a negative value when unavailabletrackingId- stable streaming id, or a negative value when unavailablemetadata- backend details, ornull
-
-
Method Details
-
getBounds
- Returns:
- normalized top-left-origin face bounds
-
getLandmark
Looks up one named landmark.
A landmark the backend could not locate is absent rather than present at a meaningless position, so a
nullreturn means "not found in this face", not "unsupported".- Parameters:
name- one of theFaceLandmarksconstants- Returns:
- the normalized landmark position, or
nullwhen the backend did not report it
-
getLandmarks
- Returns:
- immutable named landmark map; possibly empty
-
getYaw
public float getYaw()- Returns:
- left/right head rotation in degrees, or 0 if unavailable
-
getPitch
public float getPitch()- Returns:
- up/down head rotation in degrees, or 0 if unavailable
-
getRoll
public float getRoll()- Returns:
- in-plane head rotation in degrees, or 0 if unavailable
-
getSmilingProbability
public float getSmilingProbability()- Returns:
- smile probability in 0..1, or -1 when unavailable
-
getTrackingId
public int getTrackingId()- Returns:
- stream tracking identifier, or -1 when unavailable
-
getMetadata
- Returns:
- backend metadata, or
nullwhen manually constructed
-