#include "autostitch.h" #include "meowpp/oo/ObjBase.h" #include "meowpp/oo/ObjSelector.h" #include "meowpp/geo/Vectors.h" #include "meowpp/gra/FeaturePointsDetector_Harris.h" using namespace meow; class Harris: public MyFeaturePointsDetector{ private: FeaturePointsDetector_Harris _body; public: Usage usage() const{ Usage ret; ret.optionAdd('K', "Specify the constant K of 'R = detM - KtraceM'", "", stringPrintf("%.10f", _body.paramK()), false); ret.optionAdd('R', "Specify the threshold of R to determind whether is " "featuer point or not", "", stringPrintf("%.10f", _body.paramR()), false); ret.optionAdd('W', "Specify the sigma of the gaussian blur", "", stringPrintf("%.10f", _body.paramW()), false); ret.optionAdd('N', "Specify the sigma of the gaussian blur to de-noise", "", stringPrintf("%.10f", _body.paramN()), false); ret.optionAdd('G', "Specify the sigma of the gaussian blur to generate feature", "", stringPrintf("%.10f", _body.paramG()), false); ret.optionAdd('L', ".........", "", stringPrintf("%.10f", _body.paramL()), false); ret.optionAdd('B', "Description size", "", stringPrintf("%lu", _body.paramB()), false); return ret; } bool usage(meow::Usage const& usg){ double K = atof(usg.optionValue('K', 0).c_str()); double R = atof(usg.optionValue('R', 0).c_str()); double W = atof(usg.optionValue('W', 0).c_str()); double N = atof(usg.optionValue('N', 0).c_str()); double L = atof(usg.optionValue('L', 0).c_str()); double G = atof(usg.optionValue('G', 0).c_str()); size_t B = atoi(usg.optionValue('B', 0).c_str()); _body.paramK(K); _body.paramR(R); _body.paramW(W); _body.paramN(N); _body.paramL(L); _body.paramG(G); _body.paramB(B); return true; } std::vector > detect(meow::Bitmap const& bmp){ return _body.detect(bmp); } std::string type() const{ return std::string("Harris"); } ObjBase* create() const{ return new Harris(); } }; static meow::ObjSelector __(new Harris(), true);