Merge pull request #6009 from patricksnape:flann_python_fix

This commit is contained in:
Alexander Alekhin 2016-02-02 16:03:54 +00:00
commit 6f51dd1258

View File

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