moving algorithm type to param

This commit is contained in:
Dmitriy Anisimov 2014-09-06 09:29:32 +04:00
parent 5f3ee657ce
commit dfaf75f502
3 changed files with 12 additions and 11 deletions

View File

@ -230,8 +230,9 @@ public:
class CV_EXPORTS_W_MAP Params class CV_EXPORTS_W_MAP Params
{ {
public: public:
Params(int defaultK=10, bool isclassifier_=true, int Emax_=INT_MAX); Params(int algorithmType_=BRUTE_FORCE, int defaultK=10, bool isclassifier_=true, int Emax_=INT_MAX);
CV_PROP_RW int algorithmType;
CV_PROP_RW int defaultK; CV_PROP_RW int defaultK;
CV_PROP_RW bool isclassifier; CV_PROP_RW bool isclassifier;
CV_PROP_RW int Emax; // for implementation with KDTree CV_PROP_RW int Emax; // for implementation with KDTree
@ -243,9 +244,9 @@ public:
OutputArray neighborResponses=noArray(), OutputArray neighborResponses=noArray(),
OutputArray dist=noArray() ) const = 0; OutputArray dist=noArray() ) const = 0;
enum { DEFAULT=1, KDTREE=2 }; enum { BRUTE_FORCE=1, KDTREE=2 };
static Ptr<KNearest> create(const Params& params=Params(), int type=DEFAULT); static Ptr<KNearest> create(const Params& params=Params());
}; };
/****************************************************************************************\ /****************************************************************************************\

View File

@ -50,14 +50,14 @@
namespace cv { namespace cv {
namespace ml { namespace ml {
KNearest::Params::Params(int k, bool isclassifier_, int Emax_) KNearest::Params::Params(int algorithmType_, int k, bool isclassifier_, int Emax_) :
algorithmType(algorithmType_),
defaultK(k),
isclassifier(isclassifier_),
Emax(Emax_)
{ {
defaultK = k;
isclassifier = isclassifier_;
Emax = Emax_;
} }
class KNearestImpl : public KNearest class KNearestImpl : public KNearest
{ {
public: public:
@ -497,9 +497,9 @@ public:
Params params; Params params;
}; };
Ptr<KNearest> KNearest::create(const Params& p, int type) Ptr<KNearest> KNearest::create(const Params& p)
{ {
if (KDTREE==type) if (KDTREE==p.algorithmType)
{ {
return makePtr<KNearestKDTreeImpl>(p); return makePtr<KNearestKDTreeImpl>(p);
} }

View File

@ -330,7 +330,7 @@ void CV_KNearestTest::run( int /*start_from*/ )
} }
// KNearest KDTree implementation // KNearest KDTree implementation
Ptr<KNearest> knearestKdt = KNearest::create(ml::KNearest::Params(), ml::KNearest::KDTREE); Ptr<KNearest> knearestKdt = KNearest::create(ml::KNearest::Params(ml::KNearest::KDTREE));
knearestKdt->train(trainData, ml::ROW_SAMPLE, trainLabels); knearestKdt->train(trainData, ml::ROW_SAMPLE, trainLabels);
knearestKdt->findNearest(testData, 4, bestLabels); knearestKdt->findNearest(testData, 4, bestLabels);
if( !calcErr( bestLabels, testLabels, sizes, err, true ) ) if( !calcErr( bestLabels, testLabels, sizes, err, true ) )