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/vision"

vision = Google::Cloud::Vision.new

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/vision"

vision = Google::Cloud::Vision.new

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:



391
392
393
394
395
396
397
# File 'lib/google/cloud/vision/annotation/face.rb', line 391

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

#chinChin

The landmarks of the chin.

Returns:



404
405
406
407
408
# File 'lib/google/cloud/vision/annotation/face.rb', line 404

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].



364
365
366
# File 'lib/google/cloud/vision/annotation/face.rb', line 364

def confidence
  @grpc.landmarking_confidence
end

#earsEars

The landmarks of the ears.

Returns:



415
416
417
418
# File 'lib/google/cloud/vision/annotation/face.rb', line 415

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

#eyebrowsEyebrows

The landmarks of the eyebrows.

Returns:



425
426
427
428
429
430
431
432
433
434
435
# File 'lib/google/cloud/vision/annotation/face.rb', line 425

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:



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

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:



463
464
465
# File 'lib/google/cloud/vision/annotation/face.rb', line 463

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

#lipsLips

The landmarks of the lips.

Returns:



472
473
474
# File 'lib/google/cloud/vision/annotation/face.rb', line 472

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

#mouthMouth

The landmarks of the mouth.

Returns:



481
482
483
484
# File 'lib/google/cloud/vision/annotation/face.rb', line 481

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

#noseNose

The landmarks of the nose.

Returns:



491
492
493
494
495
496
# File 'lib/google/cloud/vision/annotation/face.rb', line 491

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)


503
504
505
506
507
508
# File 'lib/google/cloud/vision/annotation/face.rb', line 503

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