RKNNManager.hpp 987 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #ifndef RKNNMANAGER_HPP
  2. #define RKNNMANAGER_HPP
  3. #include <rknn_api.h>
  4. #include <opencv4/opencv2/opencv.hpp>
  5. // #include <opencv2/opencv.hpp>
  6. #include <string>
  7. #include <vector>
  8. static unsigned char *load_model(const char *filename, int *model_size);
  9. class RKNNManager
  10. {
  11. public:
  12. static RKNNManager &getInstance()
  13. {
  14. static RKNNManager instance;
  15. return instance;
  16. }
  17. bool initialize(const std::string &model_path);
  18. bool infer(const cv::Mat &input_image, cv::Mat &output_image);
  19. void release();
  20. private:
  21. RKNNManager();
  22. ~RKNNManager();
  23. RKNNManager(const RKNNManager &) = delete;
  24. RKNNManager &operator=(const RKNNManager &) = delete;
  25. rknn_context ctx;
  26. unsigned char *model_data;
  27. int model_data_size;
  28. rknn_input_output_num io_num;
  29. rknn_tensor_attr input_attrs[1];
  30. rknn_tensor_attr output_attrs[3];
  31. int width, height, channel;
  32. void *resize_buf;
  33. // output image buffer
  34. };
  35. #endif // RKNNMANAGER_HPP