cut_point_rs_reid.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. void set_image_saver(CImStoreManager** ppis) { m_ppImgSaver = ppis; }
  53. private:
  54. int m_stem_type; //植株类别:0--穗苗;1--砧木
  55. //global configure parameters
  56. ConfigParam& m_cparam;
  57. CGcvLogger * m_pLogger;
  58. string m_imgId;
  59. CImStoreManager** m_ppImgSaver;
  60. cv::Mat m_grayImg;// gray image
  61. cv::Mat m_binImg; // bin image
  62. //返回图片,用于调试
  63. ImgInfo* m_pImginfoBin;//
  64. ImgInfo* m_pImgCutPoint;//reference-point, cutpoint
  65. void clear_imginfo();
  66. inline string get_stem_type_name();
  67. void img_preprocess(cv::Mat&img);
  68. void find_cut_curve(vector<cv::Point>&points,
  69. vector<cv::Point>&cut_curve,
  70. cv::RotatedRect& retval);
  71. void find_cut_ys(vector<cv::Point>&points,
  72. int&minx, int& maxx,
  73. int&miny, int&maxy,
  74. int&cut_miny, int&cut_midy, int&cut_maxy
  75. );
  76. };
  77. };