![]() |
Face Engine SDK
5.25.0
A face detection, recognition and tracking engine.
|
00001 #pragma once 00002 #include <fsdk/Estimators/IHeadPoseEstimator.h> 00003 00004 #include <fsdk/IObject.h> 00005 #include <fsdk/FSDKError.h> 00006 #include <fsdk/Optional.h> 00007 #include <fsdk/Types.h> 00008 #include <fsdk/vlc/future.h> 00009 #include <vector> 00010 00011 namespace fsdk { 00012 00013 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00014 DECLARE_SMARTPTR(IBestShotQualityEstimator); 00015 #endif 00016 00027 struct IBestShotQualityEstimator : IRefCounted { 00032 enum EstimationRequest { 00033 estimateAGS = 1 << 0, 00034 estimateHeadPose = 1 << 1, 00035 estimateAll = 0xffff 00036 }; 00037 00041 struct EstimationResult { 00042 Optional<HeadPoseEstimation> headPose; 00043 Optional<float> ags; 00044 }; 00045 00057 virtual Result<FSDKError> estimate( 00058 const Image& image, 00059 const Detection& detection, 00060 const EstimationRequest request, 00061 EstimationResult& result) const noexcept = 0; 00062 00077 virtual Result<FSDKError> estimate( 00078 Span<const Image> images, 00079 Span<const Detection> detections, 00080 const EstimationRequest request, 00081 Span<EstimationResult> results) const noexcept = 0; 00082 00086 using EstimationBatch = std::vector<EstimationResult>; 00087 using EstimationBatchFuture = vlc::future<EstimationBatch>; 00103 virtual EstimationBatchFuture estimateAsync( 00104 Span<const Image> images, 00105 Span<const Detection> detections, 00106 const EstimationRequest request) const = 0; 00107 00121 virtual Result<FSDKError> validate( 00122 Span<const Image> images, 00123 Span<const Detection> detections, 00124 const EstimationRequest request, 00125 Span<Result<FSDKError>> errors) const noexcept = 0; 00126 }; 00127 00128 /* 00129 Implementation details. 00130 */ 00131 inline IBestShotQualityEstimator::EstimationRequest operator|( 00132 IBestShotQualityEstimator::EstimationRequest first, 00133 IBestShotQualityEstimator::EstimationRequest second) { 00134 return static_cast<IBestShotQualityEstimator::EstimationRequest>( 00135 static_cast<int>(first) | static_cast<int>(second)); 00136 } 00137 00139 } // namespace fsdk