mirror of
https://github.com/opencv/opencv.git
synced 2025-06-08 01:53:19 +08:00
Fix missing angles in AKAZE keypoints
This commit is contained in:
parent
beea04cc89
commit
4a3da1c4ed
@ -200,6 +200,8 @@ namespace cv
|
|||||||
if (!useProvidedKeypoints)
|
if (!useProvidedKeypoints)
|
||||||
{
|
{
|
||||||
impl.Feature_Detection(keypoints);
|
impl.Feature_Detection(keypoints);
|
||||||
|
if( !descriptors.needed() )
|
||||||
|
impl.Compute_Keypoints_Orientation(keypoints);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mask.empty())
|
if (!mask.empty())
|
||||||
|
@ -844,6 +844,17 @@ void AKAZEFeatures::Compute_Main_Orientation(KeyPoint& kpt, const std::vector<TE
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ************************************************************************* */
|
||||||
|
/**
|
||||||
|
* @brief This method computes the main orientation for a given keypoints
|
||||||
|
* @param kpts Input keypoints
|
||||||
|
*/
|
||||||
|
void AKAZEFeatures::Compute_Keypoints_Orientation(std::vector<KeyPoint>& kpts) const
|
||||||
|
{
|
||||||
|
for(size_t i = 0; i < kpts.size(); i++)
|
||||||
|
Compute_Main_Orientation(kpts[i], evolution_);
|
||||||
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
/**
|
/**
|
||||||
* @brief This method computes the upright descriptor (not rotation invariant) of
|
* @brief This method computes the upright descriptor (not rotation invariant) of
|
||||||
|
@ -54,6 +54,7 @@ public:
|
|||||||
/// Feature description methods
|
/// Feature description methods
|
||||||
void Compute_Descriptors(std::vector<cv::KeyPoint>& kpts, cv::Mat& desc);
|
void Compute_Descriptors(std::vector<cv::KeyPoint>& kpts, cv::Mat& desc);
|
||||||
static void Compute_Main_Orientation(cv::KeyPoint& kpt, const std::vector<TEvolution>& evolution_);
|
static void Compute_Main_Orientation(cv::KeyPoint& kpt, const std::vector<TEvolution>& evolution_);
|
||||||
|
void Compute_Keypoints_Orientation(std::vector<cv::KeyPoint>& kpts) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
|
@ -301,3 +301,23 @@ TEST( Features2d_Detector_AKAZE, regression )
|
|||||||
CV_FeatureDetectorTest test( "detector-akaze", AKAZE::create() );
|
CV_FeatureDetectorTest test( "detector-akaze", AKAZE::create() );
|
||||||
test.safe_run();
|
test.safe_run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST( Features2d_Detector_AKAZE, detect_and_compute_split )
|
||||||
|
{
|
||||||
|
Mat testImg(100, 100, CV_8U);
|
||||||
|
RNG rng(101);
|
||||||
|
rng.fill(testImg, RNG::UNIFORM, Scalar(0), Scalar(255), true);
|
||||||
|
|
||||||
|
Ptr<Feature2D> ext = AKAZE::create(AKAZE::DESCRIPTOR_MLDB, 0, 3, 0.001f, 1, 1, KAZE::DIFF_PM_G2);
|
||||||
|
vector<KeyPoint> detAndCompKps;
|
||||||
|
Mat desc;
|
||||||
|
ext->detectAndCompute(testImg, noArray(), detAndCompKps, desc);
|
||||||
|
|
||||||
|
vector<KeyPoint> detKps;
|
||||||
|
ext->detect(testImg, detKps);
|
||||||
|
|
||||||
|
ASSERT_EQ(detKps.size(), detAndCompKps.size());
|
||||||
|
|
||||||
|
for(size_t i = 0; i < detKps.size(); i++)
|
||||||
|
ASSERT_EQ(detKps[i].hash(), detAndCompKps[i].hash());
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user