}
}
+ void write(FileStorage& fs) const
+ {
+ fs << "descriptor" << descriptor;
+ fs << "descriptor_channels" << descriptor_channels;
+ fs << "descriptor_size" << descriptor_size;
+ fs << "threshold" << threshold;
+ fs << "octaves" << octaves;
+ fs << "sublevels" << sublevels;
+ fs << "diffusivity" << diffusivity;
+ }
+
+ void read(const FileNode& fn)
+ {
+ descriptor = (int)fn["descriptor"];
+ descriptor_channels = (int)fn["descriptor_channels"];
+ descriptor_size = (int)fn["descriptor_size"];
+ threshold = (float)fn["threshold"];
+ octaves = (int)fn["octaves"];
+ sublevels = (int)fn["sublevels"];
+ diffusivity = (int)fn["diffusivity"];
+ }
+
int descriptor;
int descriptor_channels;
int descriptor_size;
void
BriskLayer::getAgastPoints(int threshold, std::vector<KeyPoint>& keypoints)
{
- fast_9_16_->set("threshold", threshold);
+ fast_9_16_ = FastFeatureDetector::create(threshold);
fast_9_16_->detect(img_, keypoints);
// also write scores
std::vector<KeyPoint>& keypoints,
InputArray mask )
{
+ if( image.empty() )
+ {
+ keypoints.clear();
+ return;
+ }
detectAndCompute(image, mask, keypoints, noArray(), false);
}
std::vector<KeyPoint>& keypoints,
OutputArray descriptors )
{
+ if( image.empty() )
+ {
+ descriptors.release();
+ return;
+ }
detectAndCompute(image, noArray(), keypoints, descriptors, true);
}
}
}
+ void write(FileStorage& fs) const
+ {
+ fs << "extended" << (int)extended;
+ fs << "upright" << (int)upright;
+ fs << "threshold" << threshold;
+ fs << "octaves" << octaves;
+ fs << "sublevels" << sublevels;
+ fs << "diffusivity" << diffusivity;
+ }
+
+ void read(const FileNode& fn)
+ {
+ extended = (int)fn["extended"] != 0;
+ upright = (int)fn["upright"] != 0;
+ threshold = (float)fn["threshold"];
+ octaves = (int)fn["octaves"];
+ sublevels = (int)fn["sublevels"];
+ diffusivity = (int)fn["diffusivity"];
+ }
+
bool extended;
bool upright;
float threshold;
*/
void KAZEFeatures::Compute_KContrast(const Mat &img, const float &kpercentile)
{
- options_.kcontrast = compute_k_percentile(img, kpercentile, options_.sderivatives, options_.kcontrast_bins, 0, 0);
+ options_.kcontrast = compute_k_percentile(img, kpercentile, options_.sderivatives, options_.kcontrast_bins, 0, 0);
}
/* ************************************************************************* */
cvtColor(image1, gray1, COLOR_BGR2GRAY);
cvtColor(image2, gray2, COLOR_BGR2GRAY);
- Ptr<FeatureDetector> detector = Algorithm::create<FeatureDetector>("Feature2D.BRISK");
+ Ptr<FeatureDetector> detector = BRISK::create();
vector<KeyPoint> keypoints1;
vector<KeyPoint> keypoints2;
TEST( Features2d_DescriptorMatcher_BruteForce, regression )
{
- CV_DescriptorMatcherTest test( "descriptor-matcher-brute-force", Algorithm::create<DescriptorMatcher>("DescriptorMatcher.BFMatcher"), 0.01f );
+ CV_DescriptorMatcherTest test( "descriptor-matcher-brute-force",
+ DescriptorMatcher::create("BFMatcher"), 0.01f );
test.safe_run();
}
TEST( Features2d_DescriptorMatcher_FlannBased, regression )
{
- CV_DescriptorMatcherTest test( "descriptor-matcher-flann-based", Algorithm::create<DescriptorMatcher>("DescriptorMatcher.FlannBasedMatcher"), 0.04f );
+ CV_DescriptorMatcherTest test( "descriptor-matcher-flann-based",
+ DescriptorMatcher::create("FlannBasedMatcher"), 0.04f );
test.safe_run();
}
TEST(Features2D_ORB, _1996)
{
- Ptr<FeatureDetector> fd = ORB::create();
- fd->set("nFeatures", 10000);//setting a higher maximum to make effect of threshold visible
- fd->set("fastThreshold", 20);//more features than the default
+ Ptr<FeatureDetector> fd = ORB::create(10000, 1.2f, 8, 31, 0, 2, ORB::HARRIS_SCORE, 31, 20);
Ptr<DescriptorExtractor> de = fd;
Mat image = imread(string(cvtest::TS::ptr()->get_data_path()) + "shared/lena.png");
TEST(Features2d_RotationInvariance_Descriptor_BRISK, regression)
{
- DescriptorRotationInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.BRISK"),
- Algorithm::create<DescriptorExtractor>("Feature2D.BRISK"),
- Algorithm::create<DescriptorExtractor>("Feature2D.BRISK")->defaultNorm(),
- 0.99f);
+ Ptr<Feature2D> f2d = BRISK::create();
+ DescriptorRotationInvarianceTest test(f2d, f2d, f2d->defaultNorm(), 0.99f);
test.safe_run();
}
TEST(Features2d_RotationInvariance_Descriptor_ORB, regression)
{
- DescriptorRotationInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.ORB"),
- Algorithm::create<DescriptorExtractor>("Feature2D.ORB"),
- Algorithm::create<DescriptorExtractor>("Feature2D.ORB")->defaultNorm(),
- 0.99f);
+ Ptr<Feature2D> f2d = ORB::create();
+ DescriptorRotationInvarianceTest test(f2d, f2d, f2d->defaultNorm(), 0.99f);
test.safe_run();
}
TEST(Features2d_ScaleInvariance_Detector_BRISK, regression)
{
- DetectorScaleInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.BRISK"),
- 0.08f,
- 0.49f);
+ DetectorScaleInvarianceTest test(BRISK::create(), 0.08f, 0.49f);
test.safe_run();
}
TEST(Features2d_ScaleInvariance_Detector_KAZE, regression)
{
- DetectorScaleInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.KAZE"),
- 0.08f,
- 0.49f);
+ DetectorScaleInvarianceTest test(KAZE::create(), 0.08f, 0.49f);
test.safe_run();
}
TEST(Features2d_ScaleInvariance_Detector_AKAZE, regression)
{
- DetectorScaleInvarianceTest test(Algorithm::create<FeatureDetector>("Feature2D.AKAZE"),
- 0.08f,
- 0.49f);
+ DetectorScaleInvarianceTest test(AKAZE::create(), 0.08f, 0.49f);
test.safe_run();
}