cut_point_rs_reid.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. //cut point reid for rootstock plant
  2. #pragma once
  3. #include <time.h>
  4. #include <opencv.hpp>
  5. #include "data_def_api.h"
  6. #include "data_def.h"
  7. #include "logger.h"
  8. #include "imstorage_manager.h"
  9. //using namespace cv;
  10. namespace graft_cv{
  11. class CRootStockCutPointReid{
  12. public:
  13. CRootStockCutPointReid(ConfigParam&c,CGcvLogger*pLog=0);
  14. ~CRootStockCutPointReid();
  15. int cut_point_reid( //切后切割点识别
  16. ImgInfo*, //切后图片
  17. cv::Mat&, //切后图片,测试用
  18. const char * pre_img_id, //切前图像id
  19. PositionInfo& posinfo,
  20. map<string, cv::Mat>& img_cache
  21. );
  22. void set_image_saver(CImStoreManager** ppis){m_ppImgSaver=ppis;}
  23. private:
  24. cv::Mat m_preGrayImg;// gray image
  25. //Mat m_binImg;// binary image
  26. cv::Mat m_grayImg;// gray image
  27. cv::Mat m_edgeImg;
  28. string m_imgId;
  29. CImStoreManager** m_ppImgSaver;
  30. //返回图片,用于调试
  31. ImgInfo* m_pImginfoBinFork;//fork-y, right-x
  32. ImgInfo* m_pImgCorners;//corners, reference-point, candidate box
  33. ImgInfo* m_pImgCutPoint;//reference-point, cutpoint
  34. //global configure parameters
  35. ConfigParam& m_cparam;
  36. CGcvLogger * m_pLogger;
  37. // image segment
  38. void img_preprocess(cv::Mat&);
  39. void clear_imginfo();
  40. };
  41. // 茄科切割点识别
  42. // 切后识别
  43. class CSolaCutPointReid {
  44. public:
  45. CSolaCutPointReid(ConfigParam&c, int stemType=0, CGcvLogger*pLog=0);
  46. ~CSolaCutPointReid();
  47. int cut_point_reid( //切后切割点识别
  48. ImgInfo*, //切后图片
  49. cv::Mat&, //切后图片,测试用
  50. PositionInfo& posinfo
  51. );
  52. private:
  53. int m_stem_type; //植株类别:0--砧木;1--穗苗
  54. //global configure parameters
  55. ConfigParam& m_cparam;
  56. CGcvLogger * m_pLogger;
  57. string m_imgId;
  58. CImStoreManager** m_ppImgSaver;
  59. cv::Mat m_grayImg;// gray image
  60. cv::Mat m_binImg; // bin image
  61. //返回图片,用于调试
  62. ImgInfo* m_pImginfoBin;//
  63. ImgInfo* m_pImgCutPoint;//reference-point, cutpoint
  64. void clear_imginfo();
  65. inline string get_stem_type_name();
  66. void img_preprocess(cv::Mat&img);
  67. void find_cut_curve(vector<cv::Point>&points,
  68. vector<cv::Point>&cut_curve,
  69. cv::RotatedRect& retval);
  70. };
  71. };