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
{
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 bool isclassifier;
CV_PROP_RW int Emax; // for implementation with KDTree
@ -243,9 +244,9 @@ public:
OutputArray neighborResponses=noArray(),
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 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
{
public:
@ -497,9 +497,9 @@ public:
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);
}

View File

@ -330,7 +330,7 @@ void CV_KNearestTest::run( int /*start_from*/ )
}
// 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->findNearest(testData, 4, bestLabels);
if( !calcErr( bestLabels, testLabels, sizes, err, true ) )