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

#chin ⇒ Chin

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

#confidence ⇒ Float

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

#ears ⇒ Ears

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

#eyebrows ⇒ Eyebrows

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

#eyes ⇒ Eyes

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

#forehead ⇒ Landmark

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

#lips ⇒ Lips

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

#mouth ⇒ Mouth

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

#nose ⇒ Nose

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_h ⇒ Hash

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