mirror of
https://github.com/zebrajr/opencv.git
synced 2025-12-06 12:19:50 +01:00
Fix ml::KDTree::findNearest
This commit is contained in:
parent
c75cd1047b
commit
98a12515fe
|
|
@ -396,9 +396,22 @@ public:
|
|||
{
|
||||
Mat _res, _nr, _d;
|
||||
tr.findNearest(test_samples.row(i), k, Emax, _res, _nr, _d, noArray());
|
||||
if( _results.needed() )
|
||||
{
|
||||
res.push_back(_res.t());
|
||||
_results.assign(res);
|
||||
}
|
||||
if( _neighborResponses.needed() )
|
||||
{
|
||||
nr.push_back(_nr.t());
|
||||
_neighborResponses.assign(nr);
|
||||
}
|
||||
if( _dists.needed() )
|
||||
{
|
||||
d.push_back(_d.t());
|
||||
_dists.assign(d);
|
||||
}
|
||||
}
|
||||
|
||||
return result; // currently always 0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,11 +39,16 @@ TEST(ML_KNearest, accuracy)
|
|||
{
|
||||
SCOPED_TRACE("KDTree");
|
||||
Mat neighborIndexes;
|
||||
Mat neighborResponses;
|
||||
Mat dists;
|
||||
float err = 1000;
|
||||
Ptr<KNearest> knn = KNearest::create();
|
||||
knn->setAlgorithmType(KNearest::KDTREE);
|
||||
knn->train(trainData, ml::ROW_SAMPLE, trainLabels);
|
||||
knn->findNearest(testData, 4, neighborIndexes);
|
||||
knn->findNearest(testData, 4, neighborIndexes, neighborResponses, dists);
|
||||
EXPECT_EQ(neighborIndexes.size(), Size(4, pointsCount));
|
||||
EXPECT_EQ(neighborResponses.size(), Size(4, pointsCount * 2));
|
||||
EXPECT_EQ(dists.size(), Size(4, pointsCount));
|
||||
Mat bestLabels;
|
||||
// The output of the KDTree are the neighbor indexes, not actual class labels
|
||||
// so we need to do some extra work to get actual predictions
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user