mirror of
https://github.com/opencv/opencv.git
synced 2025-06-12 12:22:51 +08:00
Merge pull request #17737 from pemmanuelviel:pev--fix-trees-descent
This commit is contained in:
commit
5bc6b6fc26
@ -547,7 +547,7 @@ public:
|
|||||||
void findNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, const SearchParams& searchParams) CV_OVERRIDE
|
void findNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, const SearchParams& searchParams) CV_OVERRIDE
|
||||||
{
|
{
|
||||||
|
|
||||||
int maxChecks = get_param(searchParams,"checks",32);
|
const int maxChecks = get_param(searchParams,"checks",32);
|
||||||
|
|
||||||
// Priority queue storing intermediate branches in the best-bin-first search
|
// Priority queue storing intermediate branches in the best-bin-first search
|
||||||
Heap<BranchSt>* heap = new Heap<BranchSt>((int)size_);
|
Heap<BranchSt>* heap = new Heap<BranchSt>((int)size_);
|
||||||
@ -556,6 +556,8 @@ public:
|
|||||||
int checks = 0;
|
int checks = 0;
|
||||||
for (int i=0; i<trees_; ++i) {
|
for (int i=0; i<trees_; ++i) {
|
||||||
findNN(root[i], result, vec, checks, maxChecks, heap, checked);
|
findNN(root[i], result, vec, checks, maxChecks, heap, checked);
|
||||||
|
if ((checks >= maxChecks) && result.full())
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
BranchSt branch;
|
BranchSt branch;
|
||||||
@ -747,8 +749,8 @@ private:
|
|||||||
Heap<BranchSt>* heap, std::vector<bool>& checked)
|
Heap<BranchSt>* heap, std::vector<bool>& checked)
|
||||||
{
|
{
|
||||||
if (node->childs==NULL) {
|
if (node->childs==NULL) {
|
||||||
if (checks>=maxChecks) {
|
if ((checks>=maxChecks) && result.full()) {
|
||||||
if (result.full()) return;
|
return;
|
||||||
}
|
}
|
||||||
for (int i=0; i<node->size; ++i) {
|
for (int i=0; i<node->size; ++i) {
|
||||||
int index = node->indices[i];
|
int index = node->indices[i];
|
||||||
|
Loading…
Reference in New Issue
Block a user