//cut point reid for rootstock plant #pragma once #include #include #include "data_def_api.h" #include "data_def.h" #include "logger.h" #include "imstorage_manager.h" //using namespace cv; namespace graft_cv{ class CRootStockCutPointReid{ public: CRootStockCutPointReid(ConfigParam&c,CGcvLogger*pLog=0); ~CRootStockCutPointReid(); int cut_point_reid( //切后切割点识别 ImgInfo*, //切后图片 cv::Mat&, //切后图片,测试用 const char * pre_img_id, //切前图像id PositionInfo& posinfo, map& img_cache ); void set_image_saver(CImStoreManager** ppis){m_ppImgSaver=ppis;} private: cv::Mat m_preGrayImg;// gray image //Mat m_binImg;// binary image cv::Mat m_grayImg;// gray image cv::Mat m_edgeImg; string m_imgId; CImStoreManager** m_ppImgSaver; //返回图片,用于调试 ImgInfo* m_pImginfoBinFork;//fork-y, right-x ImgInfo* m_pImgCorners;//corners, reference-point, candidate box ImgInfo* m_pImgCutPoint;//reference-point, cutpoint //global configure parameters ConfigParam& m_cparam; CGcvLogger * m_pLogger; // image segment void img_preprocess(cv::Mat&); void clear_imginfo(); }; // 茄科切割点识别 // 切后识别 class CSolaCutPointReid { public: CSolaCutPointReid(ConfigParam&c, int stemType=0, CGcvLogger*pLog=0); ~CSolaCutPointReid(); int cut_point_reid( //切后切割点识别 ImgInfo*, //切后图片 cv::Mat&, //切后图片,测试用 PositionInfo& posinfo ); private: int m_stem_type; //植株类别:0--砧木;1--穗苗 //global configure parameters ConfigParam& m_cparam; CGcvLogger * m_pLogger; string m_imgId; CImStoreManager** m_ppImgSaver; cv::Mat m_grayImg;// gray image cv::Mat m_binImg; // bin image //返回图片,用于调试 ImgInfo* m_pImginfoBin;// ImgInfo* m_pImgCutPoint;//reference-point, cutpoint void clear_imginfo(); inline string get_stem_type_name(); void img_preprocess(cv::Mat&img); void find_cut_curve(vector&points, vector&cut_curve, cv::RotatedRect& retval); }; };