class CV_EXPORTS PyramidAdaptedFeatureDetector : public FeatureDetector
{
public:
- PyramidAdaptedFeatureDetector( const Ptr<FeatureDetector>& detector, int levels=2 );
+ // maxLevel - The 0-based index of the last pyramid layer
+ PyramidAdaptedFeatureDetector( const Ptr<FeatureDetector>& detector, int maxLevel=2 );
// TODO implement read/write
virtual bool empty() const;
virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
Ptr<FeatureDetector> detector;
- int levels;
+ int maxLevel;
};
/** \brief A feature detector parameter adjuster, this is used by the DynamicAdaptedFeatureDetector
/*
* PyramidAdaptedFeatureDetector
*/
-PyramidAdaptedFeatureDetector::PyramidAdaptedFeatureDetector( const Ptr<FeatureDetector>& _detector, int _levels )
- : detector(_detector), levels(_levels)
+PyramidAdaptedFeatureDetector::PyramidAdaptedFeatureDetector( const Ptr<FeatureDetector>& _detector, int _maxLevel )
+ : detector(_detector), maxLevel(_maxLevel)
{}
bool PyramidAdaptedFeatureDetector::empty() const
void PyramidAdaptedFeatureDetector::detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask ) const
{
Mat src = image;
- for( int l = 0, multiplier = 1; l <= levels; ++l, multiplier *= 2 )
+ for( int l = 0, multiplier = 1; l <= maxLevel; ++l, multiplier *= 2 )
{
// Detect on current level of the pyramid
vector<KeyPoint> new_pts;
keypoints.insert( keypoints.end(), new_pts.begin(), new_pts.end() );
// Downsample
- if( l < levels )
+ if( l < maxLevel )
{
Mat dst;
pyrDown(src, dst);