Skip to content

Instantly share code, notes, and snippets.

@pbc
Forked from patricksnape/flann.patch
Created September 10, 2016 15:58
Show Gist options
  • Select an option

  • Save pbc/57f3c79a5e12d95bcfa06387cc232a19 to your computer and use it in GitHub Desktop.

Select an option

Save pbc/57f3c79a5e12d95bcfa06387cc232a19 to your computer and use it in GitHub Desktop.

Revisions

  1. Patrick Snape revised this gist Jan 23, 2016. 1 changed file with 63 additions and 27 deletions.
    90 changes: 63 additions & 27 deletions flann.patch
    Original file line number Diff line number Diff line change
    @@ -1,46 +1,82 @@
    --- modules/features2d/src/matchers.cpp
    +++ modules/features2d/src/matchers.cpp
    @@ -1032,13 +1032,40 @@ FlannBasedMatcher::FlannBasedMatcher( const Ptr<flann::IndexParams>& _indexParam
    @@ -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);
    -
    + if(_descriptors.isUMatVector())

    - 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;
    }
    + _descriptors.getUMatVector( descriptors );
    +
    + for( size_t i = 0; i < descriptors.size(); i++ )
    + {
    + addedDescCount += descriptors[i].rows;
    + }
    + }
    + else if(_descriptors.isUMat())
    + else if( _descriptors.isUMat() )
    + {
    + std::vector<UMat> descriptors = std::vector<UMat>(1, _descriptors.getUMat());
    + for( size_t i = 0; i < descriptors.size(); i++ )
    + {
    + addedDescCount += descriptors[i].rows;
    + }
    + addedDescCount += _descriptors.getUMat().rows;
    + }
    + else if(_descriptors.isMatVector())
    + {
    + 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())
    + {
    + std::vector<Mat> descriptors = std::vector<Mat>(1, _descriptors.getMat());
    + for( size_t i = 0; i < descriptors.size(); i++ )
    + {
    + addedDescCount += descriptors[i].rows;
    + addedDescCount += descriptors[i].rows;
    + }
    + }
    + else if( _descriptors.isMat() )
    + {
    + addedDescCount += _descriptors.getMat().rows;
    + }
    + else
    + {
    + CV_Assert( _descriptors.isUMat() || _descriptors.isUMatVector() || _descriptors.isMat() || _descriptors.isMatVector() );
    }
    }

    void FlannBasedMatcher::clear()

  2. Patrick Snape created this gist Jan 23, 2016.
    46 changes: 46 additions & 0 deletions flann.patch
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,46 @@
    --- modules/features2d/src/matchers.cpp
    +++ modules/features2d/src/matchers.cpp
    @@ -1032,13 +1032,40 @@ FlannBasedMatcher::FlannBasedMatcher( const Ptr<flann::IndexParams>& _indexParam
    void FlannBasedMatcher::add( InputArrayOfArrays _descriptors )
    {
    DescriptorMatcher::add( _descriptors );
    - std::vector<UMat> descriptors;
    - _descriptors.getUMatVector(descriptors);
    -
    + 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())
    + {
    + std::vector<UMat> descriptors = std::vector<UMat>(1, _descriptors.getUMat());
    + for( size_t i = 0; i < descriptors.size(); i++ )
    + {
    + addedDescCount += descriptors[i].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())
    + {
    + std::vector<Mat> descriptors = std::vector<Mat>(1, _descriptors.getMat());
    + for( size_t i = 0; i < descriptors.size(); i++ )
    + {
    + addedDescCount += descriptors[i].rows;
    + }
    + }
    }

    void FlannBasedMatcher::clear()