#ifndef ANSOCR_H
#define ANSOCR_H
#pragma once
#include "ANSOCRBase.h"
namespace ANSCENTER {
	class ANSOCR_API ANSOCR :public ANSOCRBase {
	public:
		[[nodiscard]] virtual bool Initialize(const std::string& licenseKey, OCRModelConfig modelConfig, const std::string& modelZipFilePath, const std::string& modelZipPassword, int engineMode) override;
		[[nodiscard]] std::vector<ANSCENTER::OCRObject> RunInference(const cv::Mat& input);
		[[nodiscard]] std::vector<ANSCENTER::OCRObject> RunInference(const cv::Mat& input, const std::string& cameraId);
		[[nodiscard]] std::vector<ANSCENTER::OCRObject> RunInference(const cv::Mat& input, const std::vector<cv::Rect>& Bbox);
		[[nodiscard]] std::vector<ANSCENTER::OCRObject> RunInference(const cv::Mat& input, const std::vector<cv::Rect>& Bbox, const std::string& cameraId);

		~ANSOCR();
		[[nodiscard]] bool Destroy();
	private:
		std::recursive_mutex    _mutex;
	};
}
#endif
