Face Engine SDK  5.17.0
A face detection, recognition and tracking engine.
include/fsdk/Estimators/IBestShotQualityEstimator.h
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines