mirror of
https://github.com/opencv/opencv.git
synced 2024-12-18 11:28:02 +08:00
minor changes
This commit is contained in:
parent
1ac097ce57
commit
cd28d5d812
@ -1583,7 +1583,7 @@ struct CV_EXPORTS L1
|
|||||||
/*
|
/*
|
||||||
* Struct for matching: match index and distance between descriptors
|
* Struct for matching: match index and distance between descriptors
|
||||||
*/
|
*/
|
||||||
struct DMatch
|
struct CV_EXPORTS DMatch
|
||||||
{
|
{
|
||||||
int indexTrain;
|
int indexTrain;
|
||||||
int indexQuery;
|
int indexQuery;
|
||||||
@ -1683,25 +1683,6 @@ public:
|
|||||||
void match( const Mat& query, const Mat& mask,
|
void match( const Mat& query, const Mat& mask,
|
||||||
vector<vector<DMatch> >& matches, float threshold ) const;
|
vector<vector<DMatch> >& matches, float threshold ) const;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Find the best keypoint matches for small view changes.
|
|
||||||
*
|
|
||||||
* This function will only match descriptors whose keypoints have close enough
|
|
||||||
* image coordinates.
|
|
||||||
*
|
|
||||||
* keypoints_1 The first set of keypoints.
|
|
||||||
* descriptors_1 The first set of descriptors.
|
|
||||||
* keypoints_2 The second set of keypoints.
|
|
||||||
* descriptors_2 The second set of descriptors.
|
|
||||||
* maxDeltaX The maximum horizontal displacement.
|
|
||||||
* maxDeltaY The maximum vertical displacement.
|
|
||||||
* matches The matches between both sets.
|
|
||||||
*/
|
|
||||||
/*void matchWindowed( const vector<KeyPoint>& keypoints_1, const Mat& descriptors_1,
|
|
||||||
const vector<KeyPoint>& keypoints_2, const Mat& descriptors_2,
|
|
||||||
float maxDeltaX, float maxDeltaY, vector<Match>& matches) const;*/
|
|
||||||
virtual void clear();
|
virtual void clear();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -1728,64 +1709,6 @@ protected:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
inline void DescriptorMatcher::add( const Mat& descriptors )
|
|
||||||
{
|
|
||||||
if( train.empty() )
|
|
||||||
{
|
|
||||||
train = descriptors;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// merge train and descriptors
|
|
||||||
Mat m( train.rows + descriptors.rows, train.cols, CV_32F );
|
|
||||||
Mat m1 = m.rowRange( 0, train.rows );
|
|
||||||
train.copyTo( m1 );
|
|
||||||
Mat m2 = m.rowRange( train.rows + 1, m.rows );
|
|
||||||
descriptors.copyTo( m2 );
|
|
||||||
train = m;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void DescriptorMatcher::match( const Mat& query, vector<int>& matches ) const
|
|
||||||
{
|
|
||||||
matchImpl( query, Mat(), matches );
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void DescriptorMatcher::match( const Mat& query, const Mat& mask,
|
|
||||||
vector<int>& matches ) const
|
|
||||||
{
|
|
||||||
matchImpl( query, mask, matches );
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void DescriptorMatcher::match( const Mat& query, vector<DMatch>& matches ) const
|
|
||||||
{
|
|
||||||
matchImpl( query, Mat(), matches );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline void DescriptorMatcher::match( const Mat& query, const Mat& mask,
|
|
||||||
vector<DMatch>& matches ) const
|
|
||||||
{
|
|
||||||
matchImpl( query, mask, matches );
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void DescriptorMatcher::match( const Mat& query, vector<vector<DMatch> >& matches, float threshold ) const
|
|
||||||
{
|
|
||||||
matchImpl( query, Mat(), matches, threshold );
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void DescriptorMatcher::match( const Mat& query, const Mat& mask,
|
|
||||||
vector<vector<DMatch> >& matches, float threshold ) const
|
|
||||||
{
|
|
||||||
matchImpl( query, mask, matches, threshold );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline void DescriptorMatcher::clear()
|
|
||||||
{
|
|
||||||
train.release();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Brute-force descriptor matcher.
|
* Brute-force descriptor matcher.
|
||||||
*
|
*
|
||||||
@ -1912,7 +1835,6 @@ void BruteForceMatcher<Distance>::matchImpl( const Mat& query, const Mat& mask,
|
|||||||
|
|
||||||
template<>
|
template<>
|
||||||
void BruteForceMatcher<L2<float> >::matchImpl( const Mat& query, const Mat& mask, vector<DMatch>& matches ) const;
|
void BruteForceMatcher<L2<float> >::matchImpl( const Mat& query, const Mat& mask, vector<DMatch>& matches ) const;
|
||||||
//void BruteForceMatcher<L2<float> >::matchImpl( const Mat& query, const Mat& mask, vector<int>& matches ) const;
|
|
||||||
|
|
||||||
CV_EXPORTS Ptr<DescriptorMatcher> createDescriptorMatcher( const string& descriptorMatcherType );
|
CV_EXPORTS Ptr<DescriptorMatcher> createDescriptorMatcher( const string& descriptorMatcherType );
|
||||||
|
|
||||||
@ -2129,7 +2051,7 @@ public:
|
|||||||
|
|
||||||
virtual void classify( const Mat& image, vector<KeyPoint>& keypoints );
|
virtual void classify( const Mat& image, vector<KeyPoint>& keypoints );
|
||||||
|
|
||||||
virtual void clear ();
|
virtual void clear();
|
||||||
|
|
||||||
virtual void read( const FileNode &fn );
|
virtual void read( const FileNode &fn );
|
||||||
|
|
||||||
@ -2160,7 +2082,7 @@ public:
|
|||||||
VectorDescriptorMatch( const Ptr<DescriptorExtractor>& _extractor, const Ptr<DescriptorMatcher>& _matcher )
|
VectorDescriptorMatch( const Ptr<DescriptorExtractor>& _extractor, const Ptr<DescriptorMatcher>& _matcher )
|
||||||
: extractor( _extractor ), matcher( _matcher ) {}
|
: extractor( _extractor ), matcher( _matcher ) {}
|
||||||
|
|
||||||
~VectorDescriptorMatch() {}
|
virtual ~VectorDescriptorMatch() {}
|
||||||
|
|
||||||
// Builds flann index
|
// Builds flann index
|
||||||
void index();
|
void index();
|
||||||
|
@ -427,8 +427,67 @@ Ptr<DescriptorMatcher> createDescriptorMatcher( const string& descriptorMatcherT
|
|||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************************\
|
/****************************************************************************************\
|
||||||
* BruteForceMatcher L2 specialization *
|
* DescriptorMatcher *
|
||||||
\****************************************************************************************/
|
\****************************************************************************************/
|
||||||
|
void DescriptorMatcher::add( const Mat& descriptors )
|
||||||
|
{
|
||||||
|
if( train.empty() )
|
||||||
|
{
|
||||||
|
train = descriptors;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// merge train and descriptors
|
||||||
|
Mat m( train.rows + descriptors.rows, train.cols, CV_32F );
|
||||||
|
Mat m1 = m.rowRange( 0, train.rows );
|
||||||
|
train.copyTo( m1 );
|
||||||
|
Mat m2 = m.rowRange( train.rows + 1, m.rows );
|
||||||
|
descriptors.copyTo( m2 );
|
||||||
|
train = m;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DescriptorMatcher::match( const Mat& query, vector<int>& matches ) const
|
||||||
|
{
|
||||||
|
matchImpl( query, Mat(), matches );
|
||||||
|
}
|
||||||
|
|
||||||
|
void DescriptorMatcher::match( const Mat& query, const Mat& mask,
|
||||||
|
vector<int>& matches ) const
|
||||||
|
{
|
||||||
|
matchImpl( query, mask, matches );
|
||||||
|
}
|
||||||
|
|
||||||
|
void DescriptorMatcher::match( const Mat& query, vector<DMatch>& matches ) const
|
||||||
|
{
|
||||||
|
matchImpl( query, Mat(), matches );
|
||||||
|
}
|
||||||
|
|
||||||
|
void DescriptorMatcher::match( const Mat& query, const Mat& mask,
|
||||||
|
vector<DMatch>& matches ) const
|
||||||
|
{
|
||||||
|
matchImpl( query, mask, matches );
|
||||||
|
}
|
||||||
|
|
||||||
|
void DescriptorMatcher::match( const Mat& query, vector<vector<DMatch> >& matches, float threshold ) const
|
||||||
|
{
|
||||||
|
matchImpl( query, Mat(), matches, threshold );
|
||||||
|
}
|
||||||
|
|
||||||
|
void DescriptorMatcher::match( const Mat& query, const Mat& mask,
|
||||||
|
vector<vector<DMatch> >& matches, float threshold ) const
|
||||||
|
{
|
||||||
|
matchImpl( query, mask, matches, threshold );
|
||||||
|
}
|
||||||
|
|
||||||
|
void DescriptorMatcher::clear()
|
||||||
|
{
|
||||||
|
train.release();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BruteForceMatcher L2 specialization
|
||||||
|
*/
|
||||||
template<>
|
template<>
|
||||||
void BruteForceMatcher<L2<float> >::matchImpl( const Mat& query, const Mat& mask, vector<DMatch>& matches ) const
|
void BruteForceMatcher<L2<float> >::matchImpl( const Mat& query, const Mat& mask, vector<DMatch>& matches ) const
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user