#include "opencv2/core.hpp" #include "opencv2/imgcodecs.hpp" #include "opencv2/imgproc.hpp" #include #include #include #include #include #include #include #include #include #include #include #include namespace PaddleOCR { class Detector { public: explicit Detector(std::string model_path); void Run(const cv::Mat& src_img, std::vector& ocr_results); void SetParameters(std::string limit_type, std::string det_db_score_mode, bool is_scale, double det_db_thresh, double det_db_box_thresh, double det_db_unclip_ratio, bool use_dilation); void GetParameters(std::string& limit_type, std::string& det_db_score_mode, bool& is_scale, double& det_db_thresh, double& det_db_box_thresh, double& det_db_unclip_ratio, bool& use_dilation); private: ov::InferRequest infer_request; std::string model_path; cv::Mat src_img; std::shared_ptr model; ov::CompiledModel compiled_model; std::recursive_mutex _mutex; float ratio_h{}; float ratio_w{}; std::vector mean_ = { 0.485f, 0.456f, 0.406f }; std::vector scale_ = { 1 / 0.229f, 1 / 0.224f, 1 / 0.225f }; cv::Mat resize_img; double e = 1.0 / 255.0; std::string limit_type_ = "max"; std::string det_db_score_mode_ = "slow"; int limit_side_len_ = 960; bool is_scale_ = true; double det_db_thresh_ = 0.3; double det_db_box_thresh_ = 0.6; double det_db_unclip_ratio_ = 1.5; bool use_dilation_ = false; // pre-process ResizeImgType0 resize_op_; Normalize normalize_op_; Permute permute_op_; // post-process DBPostProcessor post_processor_; }; }