diff --git a/modules/features2d/src/kaze/AKAZEFeatures.cpp b/modules/features2d/src/kaze/AKAZEFeatures.cpp index d5a02994401675da7166b6a461fa43bf3870d24d..9c30ca928a0420169d39857acb0eea4f467069ca 100644 --- a/modules/features2d/src/kaze/AKAZEFeatures.cpp +++ b/modules/features2d/src/kaze/AKAZEFeatures.cpp @@ -342,14 +342,14 @@ void AKAZEFeatures::Find_Scale_Space_Extrema(std::vector& kpts) if (is_out == false) { if (is_repeated == false) { - point.pt.x *= ratio; - point.pt.y *= ratio; + point.pt.x = (float)(point.pt.x*ratio + .5*(ratio-1.0)); + point.pt.y = (float)(point.pt.y*ratio + .5*(ratio-1.0)); kpts_aux.push_back(point); npoints++; } else { - point.pt.x *= ratio; - point.pt.y *= ratio; + point.pt.x = (float)(point.pt.x*ratio + .5*(ratio-1.0)); + point.pt.y = (float)(point.pt.y*ratio + .5*(ratio-1.0)); kpts_aux[id_repeated] = point; } } // if is_out @@ -439,8 +439,8 @@ void AKAZEFeatures::Do_Subpixel_Refinement(std::vector& kpts) kpts[i].pt.x = x + dst(0); kpts[i].pt.y = y + dst(1); int power = fastpow(2, evolution_[kpts[i].class_id].octave); - kpts[i].pt.x *= power; - kpts[i].pt.y *= power; + kpts[i].pt.x = (float)(kpts[i].pt.x*power + .5*(power-1)); + kpts[i].pt.y = (float)(kpts[i].pt.y*power + .5*(power-1)); kpts[i].angle = 0.0; // In OpenCV the size of a keypoint its the diameter