diff -ruN a/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp b/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp --- a/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp 2019-12-19 04:02:03.000000000 -0700 +++ b/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp 2020-03-24 17:09:02.143528875 -0600 @@ -50,40 +50,6 @@ namespace xfeatures2d { -//! @addtogroup xfeatures2d_nonfree -//! @{ - -/** @brief Class for extracting keypoints and computing descriptors using the Scale Invariant Feature Transform -(SIFT) algorithm by D. Lowe @cite Lowe04 . - */ -class CV_EXPORTS_W SIFT : public Feature2D -{ -public: - /** - @param nfeatures The number of best features to retain. The features are ranked by their scores - (measured in SIFT algorithm as the local contrast) - - @param nOctaveLayers The number of layers in each octave. 3 is the value used in D. Lowe paper. The - number of octaves is computed automatically from the image resolution. - - @param contrastThreshold The contrast threshold used to filter out weak features in semi-uniform - (low-contrast) regions. The larger the threshold, the less features are produced by the detector. - - @param edgeThreshold The threshold used to filter out edge-like features. Note that the its meaning - is different from the contrastThreshold, i.e. the larger the edgeThreshold, the less features are - filtered out (more features are retained). - - @param sigma The sigma of the Gaussian applied to the input image at the octave \#0. If your image - is captured with a weak camera with soft lenses, you might want to reduce the number. - */ - CV_WRAP static Ptr create( int nfeatures = 0, int nOctaveLayers = 3, - double contrastThreshold = 0.04, double edgeThreshold = 10, - double sigma = 1.6); -}; - -typedef SIFT SiftFeatureDetector; -typedef SIFT SiftDescriptorExtractor; - /** @brief Class for extracting Speeded Up Robust Features from an image @cite Bay06 . The algorithm parameters: diff -ruN a/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp b/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp --- a/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp 2019-12-19 04:02:03.000000000 -0700 +++ b/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp 2020-03-24 17:09:02.143528875 -0600 @@ -67,6 +67,39 @@ namespace xfeatures2d { + +/** @brief Class for extracting keypoints and computing descriptors using the Scale Invariant Feature Transform +(SIFT) algorithm by D. Lowe @cite Lowe04 . +*/ +class CV_EXPORTS_W SIFT : public Feature2D +{ +public: + /** + @param nfeatures The number of best features to retain. The features are ranked by their scores + (measured in SIFT algorithm as the local contrast) + + @param nOctaveLayers The number of layers in each octave. 3 is the value used in D. Lowe paper. The + number of octaves is computed automatically from the image resolution. + + @param contrastThreshold The contrast threshold used to filter out weak features in semi-uniform + (low-contrast) regions. The larger the threshold, the less features are produced by the detector. + + @param edgeThreshold The threshold used to filter out edge-like features. Note that the its meaning + is different from the contrastThreshold, i.e. the larger the edgeThreshold, the less features are + filtered out (more features are retained). + + @param sigma The sigma of the Gaussian applied to the input image at the octave \#0. If your image + is captured with a weak camera with soft lenses, you might want to reduce the number. + */ + CV_WRAP static Ptr create(int nfeatures = 0, int nOctaveLayers = 3, + double contrastThreshold = 0.04, double edgeThreshold = 10, + double sigma = 1.6); +}; + +typedef SIFT SiftFeatureDetector; +typedef SIFT SiftDescriptorExtractor; + + //! @addtogroup xfeatures2d_experiment //! @{ diff -ruN a/opencv_contrib/modules/xfeatures2d/src/sift.cpp b/opencv_contrib/modules/xfeatures2d/src/sift.cpp --- a/opencv_contrib/modules/xfeatures2d/src/sift.cpp 2019-12-19 04:02:03.000000000 -0700 +++ b/opencv_contrib/modules/xfeatures2d/src/sift.cpp 2020-03-24 17:09:07.164676799 -0600 @@ -114,8 +114,6 @@ namespace xfeatures2d { -#ifdef OPENCV_ENABLE_NONFREE - /*! SIFT implementation. @@ -1202,14 +1200,5 @@ } } -#else // ! #ifdef OPENCV_ENABLE_NONFREE -Ptr SIFT::create( int, int, double, double, double ) -{ - CV_Error(Error::StsNotImplemented, - "This algorithm is patented and is excluded in this configuration; " - "Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library"); -} -#endif - } } diff -ruN a/opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp b/opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp --- a/opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp 2019-12-19 04:02:03.000000000 -0700 +++ b/opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp 2020-03-24 17:09:07.165676829 -0600 @@ -94,7 +94,6 @@ /* * Descriptors */ -#ifdef OPENCV_ENABLE_NONFREE TEST( Features2d_DescriptorExtractor_SIFT, regression ) { CV_DescriptorExtractorTest > test( "descriptor-sift", 1.0f, @@ -102,6 +101,7 @@ test.safe_run(); } +#ifdef OPENCV_ENABLE_NONFREE TEST( Features2d_DescriptorExtractor_SURF, regression ) { #ifdef HAVE_OPENCL @@ -375,8 +375,9 @@ Ptr f2d; }; -#ifdef OPENCV_ENABLE_NONFREE TEST(Features2d_SIFTHomographyTest, regression) { CV_DetectPlanarTest test("SIFT", 80, SIFT::create()); test.safe_run(); } + +#ifdef OPENCV_ENABLE_NONFREE TEST(Features2d_SURFHomographyTest, regression) { CV_DetectPlanarTest test("SURF", 80, SURF::create()); test.safe_run(); } #endif @@ -441,13 +442,13 @@ Ptr featureDetector_; }; -#ifdef OPENCV_ENABLE_NONFREE TEST(Features2d_SIFT_using_mask, regression) { FeatureDetectorUsingMaskTest test(SIFT::create()); test.safe_run(); } +#ifdef OPENCV_ENABLE_NONFREE TEST(DISABLED_Features2d_SURF_using_mask, regression) { FeatureDetectorUsingMaskTest test(SURF::create());