Ask Your Question

OpenCV error: ‘create’ is not a member of ‘cv::FeatureDetector {aka cv::Feature2D}’

asked 2015-07-02 03:02:37 -0500

updated 2015-07-02 03:05:24 -0500

I'm trying a simple AKAZE features example and I got the error ‘create’ is not a member of ‘cv::FeatureDetector:

Ptr<FeatureDetector> detector = FeatureDetector::create("AKAZE");

Any idea on how to initialize AKAZE? I tried matchmethod_orb_akaze_brisk.cpp example previously in my Ubuntu 12.04 but it gave me a Segmentation Fault.

edit retag flag offensive close merge delete



There is no more abstract create for features, in OpenCV 3.0, you shall create the needed featureDetector: see the docs

thdrksdfthmn gravatar imagethdrksdfthmn ( 2015-07-02 03:34:30 -0500 )edit

the old Algorithm interface is gone in 3.0.

Ptr<FeatureDetector> detector = AKAZE::create();
Ptr<Feature2D> sift = xfeatures2d::SIFT::create(); // if you have the contrib repo

also please see the tutorial

berak gravatar imageberak ( 2015-07-02 03:38:23 -0500 )edit

1 answer

Sort by » oldest newest most voted

answered 2015-07-04 05:01:38 -0500

updated 2015-07-04 05:51:26 -0500

Thanks a lot thdrksdfthmn and berak for the answer. (I missed the recent AKAZE tutorial.)

(If its ok) Could anyone of you please add (your comments) as an answer to close off this topic?

//Ptr<FeatureDetector> detector = FeatureDetector::create("AKAZE"); // Old

 Ptr<AKAZE> detector = AKAZE::create();    // // This worked in OpenCV 3.0; and also

 Ptr<AKAZE> detector = AKAZE::create(AKAZE::DESCRIPTOR_MLDB_UPRIGHT, 0, 3, 0.0001, 4, 4, KAZE::DIFF_PM_G2);

From the default constructor and the more detailed:

 Ptr<AKAZE> AKAZE::create(int descriptor_type,
                         int descriptor_size, int descriptor_channels,
                         float threshold, int octaves,
                         int sublevels, int diffusivity)
edit flag offensive delete link more

Question Tools

1 follower


Asked: 2015-07-02 03:02:37 -0500

Seen: 4,868 times

Last updated: Jul 04 '15