mirror of
https://github.com/opencv/opencv.git
synced 2025-08-05 22:19:14 +08:00
made flann dependency for features2d optional
it will allow to build features2d even if flann module is not available
This commit is contained in:
parent
1ba29cc95d
commit
26fe8bd4f2
@ -392,6 +392,12 @@ void CirclesGridClusterFinder::rectifyPatternPoints(const std::vector<cv::Point2
|
||||
|
||||
void CirclesGridClusterFinder::parsePatternPoints(const std::vector<cv::Point2f> &patternPoints, const std::vector<cv::Point2f> &rectifiedPatternPoints, std::vector<cv::Point2f> ¢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<cv::Point2f>
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
Graph::Graph(size_t n)
|
||||
|
@ -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. */
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
/****************************************************************************************\
|
||||
|
@ -1005,11 +1005,14 @@ void BFMatcher::radiusMatchImpl( InputArray _queryDescriptors, std::vector<std::
|
||||
Ptr<DescriptorMatcher> DescriptorMatcher::create( const String& descriptorMatcherType )
|
||||
{
|
||||
Ptr<DescriptorMatcher> dm;
|
||||
#ifdef HAVE_OPENCV_FLANN
|
||||
if( !descriptorMatcherType.compare( "FlannBased" ) )
|
||||
{
|
||||
dm = makePtr<FlannBasedMatcher>();
|
||||
}
|
||||
else if( !descriptorMatcherType.compare( "BruteForce" ) ) // L2
|
||||
else
|
||||
#endif
|
||||
if( !descriptorMatcherType.compare( "BruteForce" ) ) // L2
|
||||
{
|
||||
dm = makePtr<BFMatcher>(int(NORM_L2)); // anonymous enums can't be template parameters
|
||||
}
|
||||
@ -1044,9 +1047,11 @@ Ptr<DescriptorMatcher> 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> 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
|
||||
|
||||
}
|
||||
|
@ -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 )
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user