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:



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

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:



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

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



362
363
364
# File 'lib/google/cloud/vision/annotation/face.rb', line 362

def confidence
  @grpc.landmarking_confidence
end

#earsEars

The landmarks of the ears.

Returns:



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

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

#eyebrowsEyebrows

The landmarks of the eyebrows.

Returns:



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

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:



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

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:



461
462
463
# File 'lib/google/cloud/vision/annotation/face.rb', line 461

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

#lipsLips

The landmarks of the lips.

Returns:



470
471
472
# File 'lib/google/cloud/vision/annotation/face.rb', line 470

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

#mouthMouth

The landmarks of the mouth.

Returns:



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

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

#noseNose

The landmarks of the nose.

Returns:



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

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)


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

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