#pragma once #include #include #include #include namespace fsdk { #ifndef DOXYGEN_SHOULD_SKIP_THIS DECLARE_SMARTPTR(IGlassesEstimator); #endif /** @brief Glasses estimation enum. * \li \c noglasses: checks whether person is wearing glasses or not. * true - no glasses, false - with glasses; * \li \c eyeglasses: checks whether person is wearing eyeglasses or not. * true - eyeglasses, false - not eyeglasses; * \li \c sunglasses: checks whether person is wearing sunglasses or not. * true - sunglasses, false - not sunglasses. * */ enum class GlassesEstimation: uint8_t{ NoGlasses,//!< Person is not wearing glasses EyeGlasses,//!< Person is wearing eyeglasses SunGlasses,//!< Person is wearing sunglasses EstimationError//!< failed to estimate }; /** * @brief Glasses estimator interface. * @note This estimator is designed to work with a person face image; **/ struct IGlassesEstimator : IRefCounted { /** * brief checks whether person wearing any glasses or not. * @param [in] warp image with warped face; @see IWarper for details. * @return ResultValue with error code and output enum value inside. * @see GlassesEstimation, Image, ResultValue and FSDKError for details. * @note warp format must be R8G8B8, @see Format. * */ virtual ResultValue estimate(const Image& warp) const noexcept = 0; /** * @brief Checks if people are wearing glasses or not for multiple warped images in a single estimate function call * @param [in] warps span of images with warped faces. * @param [out] glassesEstimations output GlassesEstimation span. * @return Result with error code. * @see Span, GlassesEstimation, Image, Result and FSDKError for details. * @note warps format must be R8G8B8, @see Format. * @note all spans should be based on user owned continuous collections. * @note all spans should be equal size. * */ virtual Result estimate( Span warps, Span glassesEstimations) const noexcept = 0; /** * @brief Validate input of multiple frames in a single function call. * @param [in] warps span of images with warped faces. * @param [out] errors output span of errors for each image. * @return Result with error code. * @see Span, Image, Result and FSDKError for details. * @note warps format must be R8G8B8, @see Format. * @note all spans should be based on user owned continuous collections. * @note all spans should be equal size. * */ virtual Result validate( Span warps, Span> errors) const noexcept = 0; }; } // namespace fsdk