cut_point_sc.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //cut point recognization for scion plant
  2. #pragma once
  3. #include <opencv.hpp>
  4. #include "data_def_api.h"
  5. #include "logger.h"
  6. #include "imstorage_manager.h"
  7. using namespace cv;
  8. namespace graft_cv{
  9. class CScionCutPoint{
  10. public:
  11. CScionCutPoint(ConfigParam&, CGcvLogger*pLog=0);
  12. ~CScionCutPoint();
  13. int up_point_detect(
  14. ImgInfo*,
  15. Mat&,
  16. PositionInfo& posinfo
  17. );
  18. void set_image_saver(CImStoreManager** ppis){m_ppImgSaver=ppis;}
  19. private:
  20. Mat m_binImg;// binary image
  21. Mat m_grayImg;//gray image
  22. string m_imgId;
  23. CImStoreManager**m_ppImgSaver;
  24. //·µ»ØÍ¼Æ¬£¬ÓÃÓÚµ÷ÊÔ
  25. ImgInfo* m_pImginfoBinFork;//fork-y, right-x
  26. int m_folder_th;
  27. ConfigParam& m_cparam;//global configure parameters
  28. CGcvLogger* m_pLogger;
  29. // image segment
  30. void img_segment(Mat&);
  31. void get_stem_local_img(
  32. const std::vector<int>& hist,
  33. int stem_dia_min,
  34. int x0,
  35. int x1,
  36. int& stem_y_min,
  37. vector<int>& hist_col,
  38. vector<int>& hist_row,
  39. Mat& scionBinImg
  40. );
  41. void get_cut_up_point(
  42. const std::vector<int>& hist,
  43. int stem_fork_y,
  44. double r2_ratio_th,
  45. int average_window,
  46. int r2_window,
  47. int& ymin,
  48. int& ymax
  49. );
  50. void get_slop_center(
  51. int stem_x0,
  52. int stem_x1,
  53. int slop_cent_y,
  54. int& slop_cent_x);
  55. void clear_imginfo();
  56. };
  57. };