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
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());
};
/****************************************************************************************\
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:
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);
}
}
// 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 ) )