InferNetOnnxPaddleOcrCrnnRegC.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #ifndef __CRNNRecognizer_H__
  2. #define __CRNNRecognizer_H__
  3. #include <iostream>
  4. #include <fstream>
  5. #include <numeric>
  6. #include <opencv2/imgproc.hpp>
  7. #include <opencv2/highgui.hpp>
  8. #include <onnxruntime_cxx_api.h>
  9. #include <locale>
  10. #include <codecvt>
  11. #include "../TextBlock.h"
  12. #ifdef __ANDROID__
  13. #include <android/log.h>
  14. #endif
  15. using namespace cv;
  16. using namespace std;
  17. using namespace Ort;
  18. class InferNetOnnxPaddleOcrCrnnReg
  19. {
  20. public:
  21. InferNetOnnxPaddleOcrCrnnReg();
  22. void LoadNetwork(const void* modelDataRec, size_t modelDataLengthRec, const void* modelDataKeys, size_t modelDataLengthKeys);
  23. string Process(cv::Mat& srcimgCv);
  24. string PostProcess(int wIn, int hIn, float* pdataIn);
  25. void Dispose();
  26. private:
  27. Mat preprocess(Mat srcimg);
  28. void normalize_(Mat img);
  29. int inpWidth = 320;
  30. int inpHeight = 48;
  31. std::vector<float> input_image_;
  32. std::vector<string> alphabet;
  33. int names_len = 0;
  34. std::vector<int> prebLabel;
  35. Env env = Env(ORT_LOGGING_LEVEL_ERROR, "CRNN");
  36. Ort::Session* ort_session = nullptr;
  37. SessionOptions sessionOptions = SessionOptions();
  38. std::vector<char*> inputNames;
  39. std::vector<char*> outputNames;
  40. std::vector<std::vector<int64_t>> inputNodeDims; // >=1 outputs
  41. std::vector<std::vector<int64_t>> outputNodeDims; // >=1 outputs
  42. volatile bool _modelLoadedRec = false;
  43. };
  44. #endif