#ifndef __CRNNRecognizer_H__ #define __CRNNRecognizer_H__ #include #include #include #include #include #include #include #include #include "../TextBlock.h" #ifdef __ANDROID__ #include #endif using namespace cv; using namespace std; using namespace Ort; class InferNetOnnxPaddleOcrCrnnReg { public: InferNetOnnxPaddleOcrCrnnReg(); void LoadNetwork(const void* modelDataRec, size_t modelDataLengthRec, const void* modelDataKeys, size_t modelDataLengthKeys); string Process(cv::Mat& srcimgCv); string PostProcess(int wIn, int hIn, float* pdataIn); void Dispose(); private: Mat preprocess(Mat srcimg); void normalize_(Mat img); int inpWidth = 320; int inpHeight = 48; std::vector input_image_; std::vector alphabet; int names_len = 0; std::vector prebLabel; Env env = Env(ORT_LOGGING_LEVEL_ERROR, "CRNN"); Ort::Session* ort_session = nullptr; SessionOptions sessionOptions = SessionOptions(); std::vector inputNames; std::vector outputNames; std::vector> inputNodeDims; // >=1 outputs std::vector> outputNodeDims; // >=1 outputs volatile bool _modelLoadedRec = false; }; #endif