Face Engine SDK  5.25.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 
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines