Face Engine SDK  5.25.0
A face detection, recognition and tracking engine.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
IFaceOcclusionEstimator.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 namespace fsdk {
9 
10 #ifndef DOXYGEN_SHOULD_SKIP_THIS
11  DECLARE_SMARTPTR(IFaceOcclusionEstimator);
12 #endif
13 
23  enum class FaceOcclusionType : uint8_t {
24  Forehead = 0,
25  LeftEye,
26  RightEye,
27  Nose,
28  Mouth,
29  LowerFace,
30  Count
31  };
32 
37  enum class FaceOcclusionState : uint8_t {
38  NotOccluded = 0,
39  Occluded,
40  Count
41  };
42 
52 
54  float typeScores[static_cast<uint8_t>(FaceOcclusionType::Count)];
55 
61  inline float getScore(FaceOcclusionType type) const {
62  return typeScores[static_cast<uint8_t>(type)];
63  }
64 
71  return states[static_cast<uint8_t>(type)];
72  }
73 
74  FaceOcclusionState overallOcclusionState;
75  float overallOcclusionScore;
76  float hairOcclusionScore;
77  };
78 
93  estimate(const Image& warp, const Landmarks5& landmarks5) const noexcept = 0;
94 
107  virtual Result<FSDKError> estimate(
108  Span<const Image> warps,
109  Span<const Landmarks5> landmarks,
110  Span<FaceOcclusionEstimation> faceOcclusionEstimations) const noexcept = 0;
111 
123  virtual Result<FSDKError> validate(
124  Span<const Image> warps,
125  Span<const Landmarks5> landmarks,
126  Span<Result<FSDKError>> errors) const noexcept = 0;
127  };
128 
130 } // namespace fsdk
#define DECLARE_SMARTPTR(X)
Smart ptr declaration helper macro.
Definition: Def.h:56
A structure that encapsulates an action result enumeration.
Definition: Result.h:27
Common data types and structures.
Face landmarks template structure.
Definition: Landmarks.h:23
Object system types and interfaces.
Common SDK error codes.
FaceOcclusionState getState(FaceOcclusionType type) const
Returns the occlusion state.
Definition: IFaceOcclusionEstimator.h:70
Base strong reference counted object interface.
Definition: IRefCounted.h:37
FaceOcclusionState states[static_cast< uint8_t >(FaceOcclusionType::Count)]
occlusion states
Definition: IFaceOcclusionEstimator.h:51
FaceOcclusionState
FaceOcclusionState enum. This enum contains all possible facial occlusion states. ...
Definition: IFaceOcclusionEstimator.h:37
FaceOcclusionEstimation structure. This structure is used to check for occlusions in various parts of...
Definition: IFaceOcclusionEstimator.h:50
Addon for Result to output some value aside the result. Specialization for copiable types...
Definition: ResultValue.h:21
Total number of occlusion types.
Image.
Definition: Image.h:38
virtual ResultValue< FSDKError, FaceOcclusionEstimation > estimate(const Image &warp, const Landmarks5 &landmarks5) const noexcept=0
Checks whether persons face is occluded or not.
FaceOcclusion estimator interface.
Definition: IFaceOcclusionEstimator.h:83
virtual Result< FSDKError > validate(Span< const Image > warps, Span< const Landmarks5 > landmarks, Span< Result< FSDKError >> errors) const noexcept=0
Validate input of multiple frames in a single function call.
Lower part of the face (chin, mouth, etc.)
float getScore(FaceOcclusionType type) const
Returns the occlusion score for the required facial zone.
Definition: IFaceOcclusionEstimator.h:61
FaceOcclusionType
FaceOcclusionType enum. This enum contains all possible facial occlusion types.
Definition: IFaceOcclusionEstimator.h:23
Span. Not owning data view. It incapsulated pointer to the continuous array with one or more T objec...
Definition: Span.h:14