// // Created by tunm on 2023/1/25. // #ifndef ZEPHYRLPR_HYPER_LPR_CONTEXT_H #define ZEPHYRLPR_HYPER_LPR_CONTEXT_H #include #include #include "nn_implementation_module/all.h" #include "buffer_module/all.h" #include "hyper_lpr_common.h" namespace hyper { enum { hRetOk = InferenceHelper::kRetOk, ///< 成功 hRetErr = InferenceHelper::kRetErr, ///< 失败 }; class HyperLPRContext { public: HyperLPRContext(const HyperLPRContext &) = delete; HyperLPRContext &operator=(const HyperLPRContext &) = delete; explicit HyperLPRContext(); void operator()(CameraBuffer &buffer); /** * 手动初始化并实例化内部模型对象 * @param models_folder_path 存放模型文件夹的路径地址 * @param max_num 最大识别车牌数量 * @param detect_level 检测器等级 low速度快,high速度慢检出率略高于low * @param threads 推理线程数量 (暂时无效) * @param use_half 是否开启半精度推理 (暂时无效) * @param box_conf_threshold 检测框置信度阈值 * @param nms_threshold 非极大值抑制阈值 * @param rec_confidence_threshold 车牌字符识别置信度阈值 * @return 初始化状态 */ int32_t Initialize(const std::string& models_folder_path, int max_num = 1, DetectLevel detect_level = DETECT_LEVEL_LOW, int threads = 1, bool use_half = false, float box_conf_threshold = 0.3f, float nms_threshold = 0.5f, float rec_confidence_threshold = 0.75f); PlateResultList &getMObjectResults(); static PlateType PreGetPlateType(std::string& code); int32_t getMInitStatus() const; private: std::shared_ptr m_plate_detector_; std::shared_ptr m_plate_classification_; std::shared_ptr m_plate_recognition_; int m_pre_image_size_ = 320; PlateResultList m_object_results_; int m_rec_max_num_ = 1; int32_t m_init_status_ = hRetErr; }; } // namespace #endif //ZEPHYRLPR_HYPER_LPR_CONTEXT_H