#pragma once #include #include "data_def_api.h" #include "data_def.h" #include "logger.h" #include "tea_detect.h" #include "imstorage_manager.h" using namespace cv; namespace graft_cv{ class CTeaSort{ public: CTeaSort( ConfigParam& ap, img_type dtype, CGcvLogger*pLog = 0 ); ~CTeaSort(); int detect( ImgInfo*, PositionInfo& posinfo, const char* fn = 0); int load_data( ImgInfo*imginfo, const char* fn = 0); int load_model(); void set_image_saver(CImStoreManager** ppis) { m_ppImgSaver = ppis; } private: img_type m_dtype; // data type: tea_grab, tea_cut string m_imgId; string m_dtype_str; Mat m_raw_img; ConfigParam& m_cp; RetinaDrop m_drop_detector; CImStoreManager** m_ppImgSaver; CGcvLogger* m_pLogger; ImgInfo* m_pImginfoRaw; ImgInfo* m_pImginfoDetected; int generate_detect_windows(vector&boxes); int detect_impl(cv::Mat& img, vector&drop_regions, vector &droplets_raw); void clear_imginfo(); double calculate_angle(Bbox&b, double& grab_x, double&grab_y); void calculate_stem_grab_position(Bbox&b, double& grab_x, double&grab_y); //thinning void thinningIteration(cv::Mat& img, int iter); void thinning(const cv::Mat& src, cv::Mat& dst); }; };