Class: Google::Cloud::Vision::Annotation::Face::Features

Inherits:
Object
  • Object
show all
Defined in:
lib/google/cloud/vision/annotation/face.rb

Overview

Features

Represents facial landmarks or features. Left and right are defined from the vantage of the viewer of the image, without considering mirror projections typical of photos. So face.features.eyes.left typically is the person's right eye.

See Google::Cloud::Vision::Annotation::Face.

Examples:

require "google/cloud"

gcloud = Google::Cloud.new
vision = gcloud.vision

image = vision.image "path/to/face.jpg"
face = image.face

face.features.to_h.count #=> 9
face.features.eyes.left.pupil
#=> #<Landmark (x: 190.41544, y: 84.4557, z: -1.3682901)>
face.features.chin.center
#=> #<Landmark (x: 233.21977, y: 189.47475, z: 19.487228)>

See Also:

Defined Under Namespace

Classes: Chin, Ears, Eye, Eyebrow, Eyebrows, Eyes, Landmark, Lips, Mouth, Nose

Instance Method Summary collapse

Instance Method Details

#[](landmark_type) ⇒ Landmark

Returns the facial landmark for the provided type code.

Examples:

require "google/cloud"

gcloud = Google::Cloud.new
vision = gcloud.vision

image = vision.image "path/to/face.jpg"
face = image.face

face.features["RIGHT_EAR_TRAGION"]
#=> #<Landmark (x: 303.81198, y: 88.5782, z: 77.719193)>

Parameters:

  • landmark_type (String, Symbol)

    An images.annotate type code from the Vision API.

Returns:

See Also:



394
395
396
397
398
399
400
# File 'lib/google/cloud/vision/annotation/face.rb', line 394

def [] landmark_type
  landmark = Array(@gapi.landmarks).detect do |l|
    l.type == landmark_type
  end
  return nil if landmark.nil?
  Landmark.from_gapi landmark
end

#chinChin

The landmarks of the chin.

Returns:



407
408
409
410
411
# File 'lib/google/cloud/vision/annotation/face.rb', line 407

def chin
  @chin ||= Chin.new self["CHIN_LEFT_GONION"],
                     self["CHIN_GNATHION"],
                     self["CHIN_RIGHT_GONION"]
end

#confidenceFloat

The confidence of the facial landmarks detection.

Returns:

  • (Float)

    A value in the range [0,1].



366
367
368
# File 'lib/google/cloud/vision/annotation/face.rb', line 366

def confidence
  @gapi.landmarking_confidence
end

#earsEars

The landmarks of the ears.

Returns:



418
419
420
421
# File 'lib/google/cloud/vision/annotation/face.rb', line 418

def ears
  @ears ||= Ears.new self["LEFT_EAR_TRAGION"],
                     self["RIGHT_EAR_TRAGION"]
end

#eyebrowsEyebrows

The landmarks of the eyebrows.

Returns:



428
429
430
431
432
433
434
435
436
437
438
# File 'lib/google/cloud/vision/annotation/face.rb', line 428

def eyebrows
  @eyebrows ||= begin
    left = Eyebrow.new self["LEFT_OF_LEFT_EYEBROW"],
                       self["LEFT_EYEBROW_UPPER_MIDPOINT"],
                       self["RIGHT_OF_LEFT_EYEBROW"]
    right = Eyebrow.new self["LEFT_OF_RIGHT_EYEBROW"],
                        self["RIGHT_EYEBROW_UPPER_MIDPOINT"],
                        self["RIGHT_OF_RIGHT_EYEBROW"]
    Eyebrows.new left, right
  end
end

#eyesEyes

The landmarks of the eyes.

Returns:



445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
# File 'lib/google/cloud/vision/annotation/face.rb', line 445

def eyes
  @eyes ||= begin
    left = Eye.new self["LEFT_EYE_LEFT_CORNER"],
                   self["LEFT_EYE_BOTTOM_BOUNDARY"],
                   self["LEFT_EYE"], self["LEFT_EYE_PUPIL"],
                   self["LEFT_EYE_TOP_BOUNDARY"],
                   self["LEFT_EYE_RIGHT_CORNER"]
    right = Eye.new self["RIGHT_EYE_LEFT_CORNER"],
                    self["RIGHT_EYE_BOTTOM_BOUNDARY"],
                    self["RIGHT_EYE"], self["RIGHT_EYE_PUPIL"],
                    self["RIGHT_EYE_TOP_BOUNDARY"],
                    self["RIGHT_EYE_RIGHT_CORNER"]
    Eyes.new left, right
  end
end

#foreheadLandmark

The landmark for the forehead glabella.

Returns:



466
467
468
# File 'lib/google/cloud/vision/annotation/face.rb', line 466

def forehead
  @forehead ||= self["FOREHEAD_GLABELLA"]
end

#lipsLips

The landmarks of the lips.

Returns:



475
476
477
# File 'lib/google/cloud/vision/annotation/face.rb', line 475

def lips
  @lips ||= Lips.new self["UPPER_LIP"], self["LOWER_LIP"]
end

#mouthMouth

The landmarks of the mouth.

Returns:



484
485
486
487
# File 'lib/google/cloud/vision/annotation/face.rb', line 484

def mouth
  @mouth ||= Mouth.new self["MOUTH_LEFT"], self["MOUTH_CENTER"],
                       self["MOUTH_RIGHT"]
end

#noseNose

The landmarks of the nose.

Returns:



494
495
496
497
498
499
# File 'lib/google/cloud/vision/annotation/face.rb', line 494

def nose
  @nose ||= Nose.new self["NOSE_BOTTOM_LEFT"],
                     self["NOSE_BOTTOM_CENTER"], self["NOSE_TIP"],
                     self["MIDPOINT_BETWEEN_EYES"],
                     self["NOSE_BOTTOM_RIGHT"]
end

#to_hHash

Deeply converts object to a hash. All keys will be symbolized.

Returns:

  • (Hash)


506
507
508
509
510
511
# File 'lib/google/cloud/vision/annotation/face.rb', line 506

def to_h
  { confidence: confidence, chin: chin.to_h, ears: ears.to_h,
    eyebrows: eyebrows.to_h, eyes: eyes.to_h,
    forehead: forehead.to_h, lips: lips.to_h, mouth: mouth.to_h,
    nose: nose.to_h }
end