#ifndef ANSOVFBFaceDetector_H
#define ANSOVFBFaceDetector_H
#pragma once
#include <string.h>
#include <vector>
#include <iostream>
#include <typeinfo>
#include "ANSEngineCommon.h"
#include "cnn.hpp"
namespace ANSCENTER {
    class ANSENGINE_API ANSOVFBFD :public ANSFDBase {
    public:
        virtual bool Initialize(std::string licenseKey, ModelConfig modelConfig, const std::string& modelZipFilePath, const std::string& modelZipPassword, std::string& labelMap) override;
        virtual bool LoadModel(const std::string& modelZipFilePath, const std::string& modelZipPassword)override;
        bool OptimizeModel(bool fp16, std::string& optimizedModelFolder);
        std::vector<Object> RunInference(const cv::Mat& input);
        std::vector<Object> RunInference(const cv::Mat& input, const std::string& camera_id);
        
        bool Destroy();
        ~ANSOVFBFD();
    private:
        ModelConfig         _modelConfig;
        std::string         _modelFilePath;
        std::string         _landmarkModelFilePath;
        std::unique_ptr<AsyncPipeline>_faceDectectorPipeline = nullptr;
        std::unique_ptr<VectorCNN> _faceLandmark = nullptr;
    };
}
#endif
