#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /** * @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 createDetector() noexcept = 0; /** * @brief Creates Head pose estimator. * @returns Error code; @see FSDKError and Head pose estimator if succeeded, null if failed. * */ virtual ResultValue createHeadPoseEstimator() noexcept = 0; /** * @brief Creates AGS estimator. * @returns Error code; @see FSDKError and AGS estimator if succeeded, null if failed. * */ virtual ResultValue createAGSEstimator() noexcept = 0; /** * @brief Creates Eye estimator. * @returns Error code; @see FSDKError and Eye estimator if succeed, null if failed. * */ virtual ResultValue createEyeEstimator() noexcept = 0; /** * @brief Creates MedicalMask estimator. * @return ResultValue with error code and IMedicalMaskEstimatorPtr instance. * @see ResultValue, FSDKError, IMedicalMaskEstimatorPtr * */ virtual ResultValue createMedicalMaskEstimator() noexcept = 0; /** * @brief Creates Glasses estimator. * @return ResultValue with error code and IGlassesEstimatorPtr instance. * @see ResultValue, FSDKError, IGlassesEstimatorPtr * */ virtual ResultValue createGlassesEstimator() noexcept = 0; /** * @brief Creates Quality estimator. * @return ResultValue with error code and IQualityEstimatorPtr instance. * @see ResultValue, FSDKError, IQualityEstimatorPtr * */ virtual ResultValue createQualityEstimator() noexcept = 0; /** * @brief Creates BestShotQuality estimator. * @returns Error code; @see FSDKError and BestShotQuality estimator if succeed, null if failed. * */ virtual ResultValue createBestShotQualityEstimator() noexcept = 0; /** * @brief Creates Liveness OneShot estimator. * @return Error code; @see FSDKError and OneShot liveness estimator if succeed, null if failed. * */ virtual ResultValue 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 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 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 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 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 createMatcher(uint32_t version = 0) noexcept = 0; /** * @brief Creates warper. * @return Warper if succeed, null if failed. * */ virtual ResultValue 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 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 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: /faceengine.cong * @param [in] runtimePath [optional] path to runtime.conf file. Default: /runtime.cong * @returns Error code; @see FSDKError and face engine object if succeeded, null if failed. * */ FSDK_API ResultValue 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 createSettingsProvider(const char* path) noexcept; } // namespace fsdk