From: Vladislav Vinogradov Date: Fri, 13 Oct 2017 08:01:48 +0000 (+0300) Subject: made flann dependency for features2d optional X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~498^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=26fe8bd4f24b04c7678fd1cc5afa62ff7dfb3255;p=platform%2Fupstream%2Fopencv.git made flann dependency for features2d optional it will allow to build features2d even if flann module is not available --- diff --git a/modules/calib3d/src/circlesgrid.cpp b/modules/calib3d/src/circlesgrid.cpp index b55101a..5a787a7 100644 --- a/modules/calib3d/src/circlesgrid.cpp +++ b/modules/calib3d/src/circlesgrid.cpp @@ -392,6 +392,12 @@ void CirclesGridClusterFinder::rectifyPatternPoints(const std::vector &patternPoints, const std::vector &rectifiedPatternPoints, std::vector ¢ers) { +#ifndef HAVE_OPENCV_FLANN + (void)patternPoints; + (void)rectifiedPatternPoints; + (void)centers; + CV_Error(Error::StsNotImplemented, "The desired functionality requires flann module, which was disabled."); +#else flann::LinearIndexParams flannIndexParams; flann::Index flannIndex(Mat(rectifiedPatternPoints).reshape(1), flannIndexParams); @@ -425,6 +431,7 @@ void CirclesGridClusterFinder::parsePatternPoints(const std::vector } } } +#endif } Graph::Graph(size_t n) diff --git a/modules/calib3d/test/test_chesscorners.cpp b/modules/calib3d/test/test_chesscorners.cpp index 64a2d69..0627928 100644 --- a/modules/calib3d/test/test_chesscorners.cpp +++ b/modules/calib3d/test/test_chesscorners.cpp @@ -468,6 +468,8 @@ bool CV_ChessboardDetectorTest::checkByGenerator() TEST(Calib3d_ChessboardDetector, accuracy) { CV_ChessboardDetectorTest test( CHESSBOARD ); test.safe_run(); } TEST(Calib3d_CirclesPatternDetector, accuracy) { CV_ChessboardDetectorTest test( CIRCLES_GRID ); test.safe_run(); } TEST(Calib3d_AsymmetricCirclesPatternDetector, accuracy) { CV_ChessboardDetectorTest test( ASYMMETRIC_CIRCLES_GRID ); test.safe_run(); } +#ifdef HAVE_OPENCV_FLANN TEST(Calib3d_AsymmetricCirclesPatternDetectorWithClustering, accuracy) { CV_ChessboardDetectorTest test( ASYMMETRIC_CIRCLES_GRID, CALIB_CB_CLUSTERING ); test.safe_run(); } +#endif /* End of file. */ diff --git a/modules/features2d/CMakeLists.txt b/modules/features2d/CMakeLists.txt index caae24a..2a6456f 100644 --- a/modules/features2d/CMakeLists.txt +++ b/modules/features2d/CMakeLists.txt @@ -1,2 +1,2 @@ set(the_description "2D Features Framework") -ocv_define_module(features2d opencv_imgproc opencv_flann OPTIONAL opencv_highgui WRAP java python) +ocv_define_module(features2d opencv_imgproc OPTIONAL opencv_flann opencv_highgui WRAP java python) diff --git a/modules/features2d/include/opencv2/features2d.hpp b/modules/features2d/include/opencv2/features2d.hpp index 3fe5362..0ab11b6 100644 --- a/modules/features2d/include/opencv2/features2d.hpp +++ b/modules/features2d/include/opencv2/features2d.hpp @@ -43,8 +43,12 @@ #ifndef OPENCV_FEATURES_2D_HPP #define OPENCV_FEATURES_2D_HPP +#include "opencv2/opencv_modules.hpp" #include "opencv2/core.hpp" + +#ifdef HAVE_OPENCV_FLANN #include "opencv2/flann/miniflann.hpp" +#endif /** @defgroup features2d 2D Features Framework @@ -1099,6 +1103,7 @@ protected: bool crossCheck; }; +#if defined(HAVE_OPENCV_FLANN) || defined(CV_DOXYGEN) /** @brief Flann-based descriptor matcher. @@ -1145,6 +1150,8 @@ protected: int addedDescCount; }; +#endif + //! @} features2d_match /****************************************************************************************\ diff --git a/modules/features2d/src/matchers.cpp b/modules/features2d/src/matchers.cpp index 7600323..b5963e2 100644 --- a/modules/features2d/src/matchers.cpp +++ b/modules/features2d/src/matchers.cpp @@ -1005,11 +1005,14 @@ void BFMatcher::radiusMatchImpl( InputArray _queryDescriptors, std::vector DescriptorMatcher::create( const String& descriptorMatcherType ) { Ptr dm; +#ifdef HAVE_OPENCV_FLANN if( !descriptorMatcherType.compare( "FlannBased" ) ) { dm = makePtr(); } - else if( !descriptorMatcherType.compare( "BruteForce" ) ) // L2 + else +#endif + if( !descriptorMatcherType.compare( "BruteForce" ) ) // L2 { dm = makePtr(int(NORM_L2)); // anonymous enums can't be template parameters } @@ -1044,9 +1047,11 @@ Ptr DescriptorMatcher::create(int matcherType) switch(matcherType) { +#ifdef HAVE_OPENCV_FLANN case FLANNBASED: name = "FlannBased"; break; +#endif case BRUTEFORCE: name = "BruteForce"; break; @@ -1071,6 +1076,7 @@ Ptr DescriptorMatcher::create(int matcherType) } +#ifdef HAVE_OPENCV_FLANN /* * Flann based matcher @@ -1419,4 +1425,7 @@ void FlannBasedMatcher::radiusMatchImpl( InputArray _queryDescriptors, std::vect convertToDMatches( mergedDescriptors, indices, dists, matches ); } + +#endif + } diff --git a/modules/features2d/test/test_matchers_algorithmic.cpp b/modules/features2d/test/test_matchers_algorithmic.cpp index 0e3f2ff..7ad27a3 100644 --- a/modules/features2d/test/test_matchers_algorithmic.cpp +++ b/modules/features2d/test/test_matchers_algorithmic.cpp @@ -536,12 +536,14 @@ TEST( Features2d_DescriptorMatcher_BruteForce, regression ) test.safe_run(); } +#ifdef HAVE_OPENCV_FLANN TEST( Features2d_DescriptorMatcher_FlannBased, regression ) { CV_DescriptorMatcherTest test( "descriptor-matcher-flann-based", DescriptorMatcher::create("FlannBased"), 0.04f ); test.safe_run(); } +#endif TEST( Features2d_DMatch, read_write ) { diff --git a/modules/features2d/test/test_nearestneighbors.cpp b/modules/features2d/test/test_nearestneighbors.cpp index 84079fd..c967a30 100644 --- a/modules/features2d/test/test_nearestneighbors.cpp +++ b/modules/features2d/test/test_nearestneighbors.cpp @@ -49,7 +49,9 @@ using namespace std; using namespace cv; +#ifdef HAVE_OPENCV_FLANN using namespace cv::flann; +#endif //-------------------------------------------------------------------------------- class NearestNeighborTest : public cvtest::BaseTest @@ -158,6 +160,8 @@ void NearestNeighborTest::run( int /*start_from*/ ) { } //-------------------------------------------------------------------------------- +#ifdef HAVE_OPENCV_FLANN + class CV_FlannTest : public NearestNeighborTest { public: @@ -331,3 +335,5 @@ TEST(Features2d_FLANN_KDTree, regression) { CV_FlannKDTreeIndexTest test; test.s TEST(Features2d_FLANN_Composite, regression) { CV_FlannCompositeIndexTest test; test.safe_run(); } TEST(Features2d_FLANN_Auto, regression) { CV_FlannAutotunedIndexTest test; test.safe_run(); } TEST(Features2d_FLANN_Saved, regression) { CV_FlannSavedIndexTest test; test.safe_run(); } + +#endif diff --git a/modules/stitching/CMakeLists.txt b/modules/stitching/CMakeLists.txt index 7dfdd08..4955f9f 100644 --- a/modules/stitching/CMakeLists.txt +++ b/modules/stitching/CMakeLists.txt @@ -8,6 +8,6 @@ set(STITCHING_CONTRIB_DEPS "opencv_xfeatures2d") if(BUILD_SHARED_LIBS AND BUILD_opencv_world AND OPENCV_WORLD_EXCLUDE_EXTRA_MODULES) set(STITCHING_CONTRIB_DEPS "") endif() -ocv_define_module(stitching opencv_imgproc opencv_features2d opencv_calib3d +ocv_define_module(stitching opencv_imgproc opencv_features2d opencv_calib3d opencv_flann OPTIONAL opencv_cudaarithm opencv_cudawarping opencv_cudafeatures2d opencv_cudalegacy ${STITCHING_CONTRIB_DEPS} WRAP python)