|
|
|
@ -517,30 +517,32 @@ DescriptorMatcher::~DescriptorMatcher() |
|
|
|
|
|
|
|
|
|
void DescriptorMatcher::add( InputArrayOfArrays _descriptors ) |
|
|
|
|
{ |
|
|
|
|
if(_descriptors.isUMatVector()) |
|
|
|
|
if( _descriptors.isUMatVector() ) |
|
|
|
|
{ |
|
|
|
|
std::vector<UMat> descriptors; |
|
|
|
|
_descriptors.getUMatVector(descriptors); |
|
|
|
|
_descriptors.getUMatVector( descriptors ); |
|
|
|
|
utrainDescCollection.insert( utrainDescCollection.end(), descriptors.begin(), descriptors.end() ); |
|
|
|
|
} |
|
|
|
|
else if(_descriptors.isUMat()) |
|
|
|
|
else if( _descriptors.isUMat() ) |
|
|
|
|
{ |
|
|
|
|
std::vector<UMat> descriptors = std::vector<UMat>(1, _descriptors.getUMat()); |
|
|
|
|
utrainDescCollection.insert( utrainDescCollection.end(), descriptors.begin(), descriptors.end() ); |
|
|
|
|
} |
|
|
|
|
else if(_descriptors.isMatVector()) |
|
|
|
|
else if( _descriptors.isMatVector() ) |
|
|
|
|
{ |
|
|
|
|
std::vector<Mat> descriptors; |
|
|
|
|
_descriptors.getMatVector(descriptors); |
|
|
|
|
trainDescCollection.insert( trainDescCollection.end(), descriptors.begin(), descriptors.end() ); |
|
|
|
|
} |
|
|
|
|
else if(_descriptors.isMat()) |
|
|
|
|
else if( _descriptors.isMat() ) |
|
|
|
|
{ |
|
|
|
|
std::vector<Mat> descriptors = std::vector<Mat>(1, _descriptors.getMat()); |
|
|
|
|
trainDescCollection.insert( trainDescCollection.end(), descriptors.begin(), descriptors.end() ); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
CV_Assert( _descriptors.isUMat() || _descriptors.isUMatVector() || _descriptors.isMat() || _descriptors.isMatVector() ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const std::vector<Mat>& DescriptorMatcher::getTrainDescriptors() const |
|
|
|
@ -1032,12 +1034,37 @@ FlannBasedMatcher::FlannBasedMatcher( const Ptr<flann::IndexParams>& _indexParam |
|
|
|
|
void FlannBasedMatcher::add( InputArrayOfArrays _descriptors ) |
|
|
|
|
{ |
|
|
|
|
DescriptorMatcher::add( _descriptors ); |
|
|
|
|
std::vector<UMat> descriptors; |
|
|
|
|
_descriptors.getUMatVector(descriptors); |
|
|
|
|
|
|
|
|
|
for( size_t i = 0; i < descriptors.size(); i++ ) |
|
|
|
|
if( _descriptors.isUMatVector() ) |
|
|
|
|
{ |
|
|
|
|
std::vector<UMat> descriptors; |
|
|
|
|
_descriptors.getUMatVector( descriptors ); |
|
|
|
|
|
|
|
|
|
for( size_t i = 0; i < descriptors.size(); i++ ) |
|
|
|
|
{ |
|
|
|
|
addedDescCount += descriptors[i].rows; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else if( _descriptors.isUMat() ) |
|
|
|
|
{ |
|
|
|
|
addedDescCount += _descriptors.getUMat().rows; |
|
|
|
|
} |
|
|
|
|
else if( _descriptors.isMatVector() ) |
|
|
|
|
{ |
|
|
|
|
addedDescCount += descriptors[i].rows; |
|
|
|
|
std::vector<Mat> descriptors; |
|
|
|
|
_descriptors.getMatVector(descriptors); |
|
|
|
|
for( size_t i = 0; i < descriptors.size(); i++ ) |
|
|
|
|
{ |
|
|
|
|
addedDescCount += descriptors[i].rows; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else if( _descriptors.isMat() ) |
|
|
|
|
{ |
|
|
|
|
addedDescCount += _descriptors.getMat().rows; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
CV_Assert( _descriptors.isUMat() || _descriptors.isUMatVector() || _descriptors.isMat() || _descriptors.isMatVector() ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|