You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

75 lines
2.7 KiB

#pragma once
#include <fsdk/IObject.h>
#include <fsdk/FSDKError.h>
#include <fsdk/Optional.h>
#include <fsdk/Types.h>
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<FSDKError, GlassesEstimation>
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<FSDKError>
estimate(
Span<const Image> warps,
Span<GlassesEstimation> 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<FSDKError>
validate(
Span<const Image> warps,
Span<Result<FSDKError>> errors) const noexcept = 0;
};
} // namespace fsdk