1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- //cut point reid for rootstock plant
- #pragma once
- #include <time.h>
- #include <opencv.hpp>
- #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<string, cv::Mat>& 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
- );
- void set_image_saver(CImStoreManager** ppis) { m_ppImgSaver = ppis; }
- 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<cv::Point>&points,
- vector<cv::Point>&cut_curve,
- cv::RotatedRect& retval);
- void find_cut_ys(vector<cv::Point>&points,
- int&minx, int& maxx,
- int&miny, int&maxy,
- int&cut_miny, int&cut_midy, int&cut_maxy
- );
- };
- };
|