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.
 
 

261 lines
10 KiB

#pragma once
#include <fsdk/Log.h>
#include <fsdk/Def.h>
#include <fsdk/IObject.h>
#include <fsdk/ILicense.h>
#include <fsdk/IDetector.h>
#include <fsdk/IDescriptor.h>
#include <fsdk/ISettingsProvider.h>
#include <fsdk/IWarper.h>
#include <fsdk/Estimators/IAGSEstimator.h>
#include <fsdk/Estimators/IHeadPoseEstimator.h>
#include <fsdk/Estimators/IEyeEstimator.h>
#include <fsdk/Estimators/IGlassesEstimator.h>
#include <fsdk/Estimators/IBestShotQualityEstimator.h>
#include <fsdk/Estimators/ILivenessOneShotRGBEstimator.h>
#include <fsdk/Estimators/IMedicalMaskEstimator.h>
#include <fsdk/Estimators/IQualityEstimator.h>
#include <fsdk/Types/FaceEngineEdition.h>
/**
* @mainpage LUNA SDK
* @section IntroSection Introduction
* Welcome to the FaceEngine reference manual! This documentations covers all public interfaces and types.
*
* \b Advanced \b usage
* Advanced usage is covered in the Face Engine handbook. Please contact us via e-mail: info@visionlabs.ru
* if you haven't got one.
*
* \b Example \b code
* Examples located at /examples folder of LUNA SDK package.
*
* @section StructureSection Structure
* LUNA SDK consists of the following modules:
* \li Detectors: detect faces on images, and find landmarks on it
* \li Warper: normalize face position, scale and orientation by detection and landmarks.
* \li Estimators: estimate various properties of images such as blurriness.
* \li Descriptors: facilities to create and match face templates (aka descriptors).
* */
//! SDK namespace.
namespace fsdk {
#ifndef DOXYGEN_SHOULD_SKIP_THIS
DECLARE_SMARTPTR(IFaceEngineMobile);
#endif
/**
* @addtogroup CoreGroup
* @{
* */
/**
* @brief Root LUNA SDK object interface.
* @note Face Engine also implements factory interface so all usual factory options apply.
* */
struct IFaceEngineMobile : IRefCounted {
/**
* @brief Creates a detector of given type.
* @returns Error code; @see FSDKError and detector object if succeeded, null if failed.
* */
virtual ResultValue<FSDKError, IDetectorPtr> createDetector() noexcept = 0;
/**
* @brief Creates Head pose estimator.
* @returns Error code; @see FSDKError and Head pose estimator if succeeded, null if failed.
* */
virtual ResultValue<FSDKError, IHeadPoseEstimatorPtr> createHeadPoseEstimator() noexcept = 0;
/**
* @brief Creates AGS estimator.
* @returns Error code; @see FSDKError and AGS estimator if succeeded, null if failed.
* */
virtual ResultValue<FSDKError, IAGSEstimatorPtr> createAGSEstimator() noexcept = 0;
/**
* @brief Creates Eye estimator.
* @returns Error code; @see FSDKError and Eye estimator if succeed, null if failed.
* */
virtual ResultValue<FSDKError, IEyeEstimatorPtr> createEyeEstimator() noexcept = 0;
/**
* @brief Creates MedicalMask estimator.
* @return ResultValue with error code and IMedicalMaskEstimatorPtr instance.
* @see ResultValue, FSDKError, IMedicalMaskEstimatorPtr
* */
virtual ResultValue<FSDKError, IMedicalMaskEstimatorPtr> createMedicalMaskEstimator() noexcept = 0;
/**
* @brief Creates Glasses estimator.
* @return ResultValue with error code and IGlassesEstimatorPtr instance.
* @see ResultValue, FSDKError, IGlassesEstimatorPtr
* */
virtual ResultValue<FSDKError, IGlassesEstimatorPtr> createGlassesEstimator() noexcept = 0;
/**
* @brief Creates Quality estimator.
* @return ResultValue with error code and IQualityEstimatorPtr instance.
* @see ResultValue, FSDKError, IQualityEstimatorPtr
* */
virtual ResultValue<FSDKError, IQualityEstimatorPtr> createQualityEstimator() noexcept = 0;
/**
* @brief Creates BestShotQuality estimator.
* @returns Error code; @see FSDKError and BestShotQuality estimator if succeed, null if failed.
* */
virtual ResultValue<FSDKError, IBestShotQualityEstimatorPtr> createBestShotQualityEstimator() noexcept = 0;
/**
* @brief Creates Liveness OneShot estimator.
* @return Error code; @see FSDKError and OneShot liveness estimator if succeed, null if failed.
* */
virtual ResultValue<FSDKError, ILivenessOneShotRGBEstimatorPtr> createLivenessOneShotRGBEstimator() noexcept = 0;
/**
* @brief Creates Descriptor.
* @param [in] version descriptor version.
* @details face descriptor will created by default, to create human
* descriptor pass version, minimum version of human descriptor is DV_MIN_HUMAN_DESCRIPTOR_VERSION == 102
* @see DescriptorVersion
* @returns Error code; @see FSDKError and Descriptor if succeed, null if failed.
* */
virtual ResultValue<FSDKError, IDescriptorPtr> createDescriptor(uint32_t version = 0) noexcept = 0;
/**
* @brief Creates and loads Descriptor from Archive.
* @param [in] archive Archive with descriptor.
* @param [in] flags Archive flag.
* @returns Error code; @see FSDKError and Descriptor if succeed, null if failed.
* */
virtual ResultValue<FSDKError, IDescriptorPtr> createDescriptor(IArchive* archive, uint32_t flags = 0) noexcept = 0;
/**
* @brief Creates Batch of descriptors.
* @details face descriptor batch will be created by default, to create human
* descriptor batch you must pass version, minimum version of human descriptor is DV_MIN_HUMAN_DESCRIPTOR_VERSION == 102
* @see DescriptorVersion
* @param [in] size - amount of descriptors in batch.
* @param [in] version - descriptor version in batch. If 0 - use dafault version from config.
* @returns Error code; @see FSDKError and Batch if succeed, null if failed.
* */
virtual ResultValue<FSDKError, IDescriptorBatchPtr> createDescriptorBatch(int32_t size, uint32_t version = 0) noexcept = 0;
/**
* @brief Creates descriptor extractor.
* @param [in] version descriptor version.
* @details face descriptor extractor will created by default, to create human descriptor extractor
* descriptor you must pass version, minimum version of human descriptor is DV_MIN_HUMAN_DESCRIPTOR_VERSION == 102
* @see DescriptorVersion
* @returns Error code; @see FSDKError and Descriptor extractor if succeed, null if failed.
* */
virtual ResultValue<FSDKError, IDescriptorExtractorPtr> createExtractor(uint32_t version = 0) noexcept = 0;
/**
* @brief Creates descriptor matcher.
* @param [in] version descriptor version.
* @details face descriptor matcher will created by default, to create human descriptor matcher
* you must pass version, minimum version of human descriptor is DV_MIN_HUMAN_DESCRIPTOR_VERSION == 102
* @see DescriptorVersion
* @returns Error code; @see FSDKError and Descriptor matcher if succeed, null if failed.
* */
virtual ResultValue<FSDKError, IDescriptorMatcherPtr> createMatcher(uint32_t version = 0) noexcept = 0;
/**
* @brief Creates warper.
* @return Warper if succeed, null if failed.
* */
virtual ResultValue<FSDKError, IWarperPtr> createWarper() noexcept = 0;
/**
* @brief Get LUNA SDK ditribution edition.
* @return Edition of LUNA SDK instance. Posible values:
* \li CompleteEdition - full edition with all function.
* \li FrontEndEdition - short edition with excluded descriptor functions.
* Extractor, matcher, descriptor, batch and index cannot be created.
* */
virtual FaceEngineEdition getFaceEngineEdition() const noexcept = 0;
/**
* @brief Sets data directory.
* @param [in] path path to data directory.
* */
virtual void setDataDirectory(const char* path) noexcept = 0;
/**
* @brief Gets data directory.
* @details By default is set to "./data".
* @return path to data directory.
* */
virtual const char* getDataDirectory() const noexcept = 0;
/**
* @brief Sets settings provider.
* @param [in] provider settings provider.
* */
virtual void setSettingsProvider(ISettingsProvider* provider) noexcept = 0;
/**
* @brief Sets runtime settings provider.
* @param [in] provider runtime settings provider.
* */
virtual void setRuntimeSettingsProvider(ISettingsProvider* provider) noexcept = 0;
/**
* @brief Gets settings provider.
* @return settings provider.
* */
virtual ISettingsProvider* getSettingsProvider() const noexcept = 0;
/**
* @brief Gets runtime settings provider.
* @return runtime settings provider.
* */
virtual ISettingsProvider* getRuntimeSettingsProvider() const noexcept = 0;
/**
* @brief Get current License object, which was set for FaceEngine object.
* @return pointer to current license object, nullptr if no any license was set to.
*/
virtual ILicense* getLicense() const noexcept = 0;
};
/**
* @brief Makes License activation with some platform specific manner. Network connection is required.
* @param [in] license pointer to the license object which should be activated
* @param [in] configPath path to license.conf file with licensing settings.
* @return true if license was successfully activated.
*/
FSDK_API Result<FSDKError> activateLicense(ILicense* license, const char* configPath) noexcept;
/**
* @brief Makes License activation with some platform specific manner. Network connection is required.
* @param [in] license pointer to the license object which should be activated
* @param [in] provider settings provider.
* @return true if license was successfully activated.
*/
FSDK_API Result<FSDKError> activateLicense(ILicense* license, ISettingsProvider* settings) noexcept;
/**
* @brief Create the LUNA SDK root object.
* @param [in] dataPath [optional] path to folder with FSDK data. Default: ./data (on windows), /opt/visionlabs/data (on linux)
* @param [in] configPath [optional] path to faceengine.conf file. Default: <dataPath>/faceengine.cong
* @param [in] runtimePath [optional] path to runtime.conf file. Default: <dataPath>/runtime.cong
* @returns Error code; @see FSDKError and face engine object if succeeded, null if failed.
* */
FSDK_API ResultValue<FSDKError, IFaceEngineMobilePtr> createFaceEngineMobile(
const char* dataPath = nullptr,
const char* configPath = nullptr,
const char* runtimePath = nullptr) noexcept;
/**
* @brief Create a settings provider.
* @param [in] path configuration file path.
* @return settings provider object if succeeded, null if failed.
* */
FSDK_API ResultValue<FSDKError, ISettingsProviderPtr> createSettingsProvider(const char* path) noexcept;
} // namespace fsdk