* Get/Set functions for BRISK parameters, issue #11527.
Allows setting threshold and octaves parameters after creating a brisk object. These parameters do not affect the initial pattern initialization and can be changed later without re-initialization.
* Fix doc parameter name.
* Brisk get/set functions tests. Check for correct value and make tests independent of default parameter values.
* Add dummy implementations for BRISK get/set functions not to break API in case someone has overloaded the Feature2d::BRISK interface. This makes BRISK different from the other detectors/descriptors on the other hand, where get/set functions are pure virtual in the interface.
const std::vector<int> &numberList, float dMax=5.85f, float dMin=8.2f,
const std::vector<int>& indexChange=std::vector<int>());
CV_WRAP virtual String getDefaultName() const CV_OVERRIDE;
+
+ /** @brief Set detection threshold.
+ @param threshold AGAST detection threshold score.
+ */
+ CV_WRAP virtual void setThreshold(int threshold) { CV_UNUSED(threshold); return; };
+ CV_WRAP virtual int getThreshold() const { return -1; };
+
+ /** @brief Set detection octaves.
+ @param octaves detection octaves. Use 0 to do single scale.
+ */
+ CV_WRAP virtual void setOctaves(int octaves) { CV_UNUSED(octaves); return; };
+ CV_WRAP virtual int getOctaves() const { return -1; };
};
/** @brief Class implementing the ORB (*oriented BRIEF*) keypoint detector and descriptor extractor
return NORM_HAMMING;
}
+ virtual void setThreshold(int threshold_in) CV_OVERRIDE
+ {
+ threshold = threshold_in;
+ }
+
+ virtual int getThreshold() const CV_OVERRIDE
+ {
+ return threshold;
+ }
+
+ virtual void setOctaves(int octaves_in) CV_OVERRIDE
+ {
+ octaves = octaves_in;
+ }
+
+ virtual int getOctaves() const CV_OVERRIDE
+ {
+ return octaves;
+ }
+
// call this to generate the kernel:
// circle of radius r (pixels), with n points;
// short pairings with dMax, long pairings with dMin
Ptr<FeatureDetector> detector = BRISK::create();
+ // Check parameter get/set functions.
+ BRISK* detectorTyped = dynamic_cast<BRISK*>(detector.get());
+ ASSERT_NE(nullptr, detectorTyped);
+ detectorTyped->setOctaves(3);
+ detectorTyped->setThreshold(30);
+ ASSERT_EQ(detectorTyped->getOctaves(), 3);
+ ASSERT_EQ(detectorTyped->getThreshold(), 30);
+ detectorTyped->setOctaves(4);
+ detectorTyped->setThreshold(29);
+ ASSERT_EQ(detectorTyped->getOctaves(), 4);
+ ASSERT_EQ(detectorTyped->getThreshold(), 29);
+
vector<KeyPoint> keypoints1;
vector<KeyPoint> keypoints2;
detector->detect(image1, keypoints1);