Face Engine SDK
5.17.0
A face detection, recognition and tracking engine.
|
00001 #pragma once 00002 00003 #include <fsdk/IObject.h> 00004 #include <fsdk/FSDKError.h> 00005 #include <fsdk/Optional.h> 00006 #include <fsdk/Types.h> 00007 00008 namespace fsdk { 00009 00010 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00011 DECLARE_SMARTPTR(IQualityEstimator); 00012 #endif 00013 00027 struct Quality { 00028 float light; 00029 float dark; 00030 float gray; 00031 float blur; 00035 inline float getQuality() const noexcept; 00036 }; 00037 00052 struct SubjectiveQuality { 00053 float blur; 00054 float light; 00055 float darkness; 00056 float illumination; 00057 float specularity; 00058 bool isBlurred; 00059 bool isHighlighted; 00060 bool isDark; 00061 bool isIlluminated; 00062 bool isNotSpecular; 00066 inline bool isGood() const noexcept; 00067 }; 00068 00082 struct IQualityEstimator : IRefCounted { 00091 virtual Result<FSDKError> 00092 estimate(const Image& warp, Quality& quality) const noexcept = 0; 00093 00104 virtual Result<FSDKError> 00105 estimate( 00106 Span<const Image> warps, 00107 Span<Quality> quality) const noexcept = 0; 00108 00117 virtual Result<FSDKError> estimate( 00118 const Image& warp, 00119 SubjectiveQuality& quality) const noexcept = 0; 00120 00131 virtual Result<FSDKError> 00132 estimate( 00133 Span<const Image> warps, 00134 Span<SubjectiveQuality> quality) const noexcept = 0; 00135 00146 virtual Result<FSDKError> 00147 validate( 00148 Span<const Image> warps, 00149 Span<Result<FSDKError>> errors) const noexcept = 0; 00150 }; 00151 00152 /* 00153 Implementation details. 00154 */ 00155 float Quality::getQuality() const noexcept { 00156 float min1 = std::min(dark, light); 00157 float min2 = std::min(gray, blur); 00158 return std::min(min1, min2); 00159 } 00160 00161 /* 00162 Implementation details. 00163 */ 00164 bool SubjectiveQuality::isGood() const noexcept { 00165 if (!isBlurred && !isHighlighted && !isDark && !isIlluminated && !isNotSpecular) 00166 return true; 00167 return false; 00168 } 00170 } // namespace fsdk