tea_sorter.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include <opencv.hpp>
  3. #include "data_def_api.h"
  4. #include "data_def.h"
  5. #include "logger.h"
  6. #include "tea_detect.h"
  7. #include "imstorage_manager.h"
  8. using namespace cv;
  9. namespace graft_cv{
  10. class CTeaSort{
  11. public:
  12. CTeaSort(
  13. ConfigParam& ap,
  14. img_type dtype,
  15. CGcvLogger*pLog = 0
  16. );
  17. ~CTeaSort();
  18. int detect(
  19. ImgInfo*, PositionInfo& posinfo, const char* fn = 0);
  20. int load_data(
  21. ImgInfo*imginfo,
  22. const char* fn = 0);
  23. int load_model();
  24. void set_image_saver(CImStoreManager** ppis) { m_ppImgSaver = ppis; }
  25. private:
  26. img_type m_dtype; // data type: tea_grab, tea_cut
  27. string m_imgId;
  28. string m_dtype_str;
  29. Mat m_raw_img;
  30. ConfigParam& m_cp;
  31. RetinaDrop m_drop_detector;
  32. CImStoreManager** m_ppImgSaver;
  33. CGcvLogger* m_pLogger;
  34. ImgInfo* m_pImginfoRaw;
  35. ImgInfo* m_pImginfoDetected;
  36. int generate_detect_windows(vector<Rect>&boxes);
  37. int detect_impl(cv::Mat& img, vector<Rect>&drop_regions, vector<Bbox> &droplets_raw);
  38. void clear_imginfo();
  39. double calalate_angle(Bbox&b, double& grab_x, double&grab_y);
  40. };
  41. };