Face Engine SDK  5.21.0
A face detection, recognition and tracking engine.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
IEmotionsEstimator.h
1 #pragma once
2 
3 #include <fsdk/IObject.h>
4 #include <fsdk/FSDKError.h>
5 #include <fsdk/Optional.h>
6 #include <fsdk/Types.h>
7 
8 #include <algorithm>
9 
10 namespace fsdk {
11 
12 #ifndef DOXYGEN_SHOULD_SKIP_THIS
13  DECLARE_SMARTPTR(IEmotionsEstimator);
14 #endif
15 
26  float anger;
27  float disgust;
28  float fear;
29  float happiness;
30  float sadness;
31  float surprise;
32  float neutral;
33 
34  enum Emotions {
35  Anger = 0,
36  Disgust,
37  Fear,
38  Happiness,
39  Sadness,
40  Surprise,
41  Neutral,
42  Count
43  };
44 
48  inline Emotions getPredominantEmotion() const;
49 
55  inline float getEmotionScore(Emotions emotion) const;
56  };
57 
76  virtual Result<FSDKError> estimate(const Image& warp, EmotionsEstimation& estimation) const noexcept = 0;
77 
89  virtual Result<FSDKError>
90  estimate(Span<const Image> warps, Span<EmotionsEstimation> emotionEstimations) const noexcept = 0;
91 
102  virtual Result<FSDKError>
103  validate(Span<const Image> warps, Span<Result<FSDKError>> errors) const noexcept = 0;
104  };
105 
106  /*
107  Implementation details.
108  */
109  EmotionsEstimation::Emotions EmotionsEstimation::getPredominantEmotion() const {
110  const float* arr = &this->anger;
111  return static_cast<EmotionsEstimation::Emotions>(
112  std::distance(arr, std::max_element(arr, arr + EmotionsEstimation::Count)));
113  }
114 
115  /*
116  Implementation details.
117  */
118  float EmotionsEstimation::getEmotionScore(Emotions emotion) const {
119  return *(&this->anger + static_cast<uint32_t>(emotion));
120  }
121 
123 } // namespace fsdk
#define DECLARE_SMARTPTR(X)
Smart ptr declaration helper macro.
Definition: Def.h:56
float surprise
0(not surprised)..1(surprised);
Definition: IEmotionsEstimator.h:31
virtual Result< FSDKError > validate(Span< const Image > warps, Span< Result< FSDKError >> errors) const noexcept=0
Validate input of multiple frames in a single function call.
A structure that encapsulates an action result enumeration.
Definition: Result.h:27
Common data types and structures.
Object system types and interfaces.
float getEmotionScore(Emotions emotion) const
Returns score of required emotion.
Definition: IEmotionsEstimator.h:118
Common SDK error codes.
virtual Result< FSDKError > estimate(const Image &warp, EmotionsEstimation &estimation) const noexcept=0
Estimate the attributes.
Base strong reference counted object interface.
Definition: IRefCounted.h:37
Emotions estimator interface.
Definition: IEmotionsEstimator.h:66
float anger
0(not angry)..1(angry);
Definition: IEmotionsEstimator.h:26
float sadness
0(not sad)..1(sad);
Definition: IEmotionsEstimator.h:30
float neutral
0(not neutral)..1(neutral).
Definition: IEmotionsEstimator.h:32
Image.
Definition: Image.h:38
float happiness
0(not happy)..1(happy);
Definition: IEmotionsEstimator.h:29
Emotions estimation structure. Each estimation is given in normalized [0, 1] range.
Definition: IEmotionsEstimator.h:25
float fear
0(no fear)..1(fear);
Definition: IEmotionsEstimator.h:28
float disgust
0(not disgusted)..1(disgusted);
Definition: IEmotionsEstimator.h:27
Span. Not owning data view. It incapsulated pointer to the continuous array with one or more T objec...
Definition: Span.h:14
Emotions getPredominantEmotion() const
Returns emotion with greatest score.
Definition: IEmotionsEstimator.h:109