![]() |
Face Engine SDK
5.17.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 00076 virtual Result<FSDKError> estimate( 00077 Span<const Image> images, 00078 Span<const Detection> detections, 00079 const EstimationRequest request, 00080 Span<EstimationResult> results) const noexcept = 0; 00081 00085 using EstimationBatch = std::vector<EstimationResult>; 00086 using EstimationBatchFuture = vlc::future<EstimationBatch>; 00101 virtual EstimationBatchFuture estimateAsync( 00102 Span<const Image> images, 00103 Span<const Detection> detections, 00104 const EstimationRequest request) const = 0; 00105 00119 virtual Result<FSDKError> 00120 validate( 00121 Span<const Image> images, 00122 Span<const Detection> detections, 00123 const EstimationRequest request, 00124 Span<Result<FSDKError>> errors) const noexcept = 0; 00125 }; 00126 00127 /* 00128 Implementation details. 00129 */ 00130 inline IBestShotQualityEstimator::EstimationRequest 00131 operator|( 00132 IBestShotQualityEstimator::EstimationRequest first, 00133 IBestShotQualityEstimator::EstimationRequest second 00134 ) { 00135 return static_cast<IBestShotQualityEstimator::EstimationRequest>( 00136 static_cast<int>(first) | static_cast<int>(second) 00137 ); 00138 } 00140 } // namespace fsdk