title: OpenCV 3: List of available FeatureDetector::create() and DescriptorExtractor::create() options?
body: <p><strong>edit:</strong> I was looking at the wrong OpenCV2 code example, there is no <code>FeatureDetector::create</code> in OpenCV3 - this was confusing me. </p>
  
  <hr>
  
  <p>Hey new to OpenCV and learning by example by pulling apart other peoples C++ code.</p>
  
  <p>I would like to try all available options for:</p>
  
  <pre><code>detector = FeatureDetector::create(str_detector);
  descriptor = DescriptorExtractor::create(str_descriptor);
  </code></pre>
  
  <p>currently str_detector is <code>FAST</code> and str_descriptor is <code>BRISK</code></p>
  
  <p>I am having trouble finding what available Detectors and Descriptors are available to me. </p>
  
  <p>Is there a way to output a list of all currently available options?</p>
  
  <p>(I have just built the latest opencv + opencv-contrib from github on a fresh linux install)</p>
  
  <p>I have found a list of 3rd party files here <a href="https://github.com/Itseez/opencv_contrib/tree/master/modules/xfeatures2d/src" rel="noreferrer">https://github.com/Itseez/opencv_contrib/tree/master/modules/xfeatures2d/src</a> - I think these are 3rd Descriptors and Detectors because those words are mentioned in some of the files. However it would be nice to have a full list of currently compiled/available options to play with.</p>
  
  <p>Thanks!</p>
  
  <hr>
  
  <p>Trying to find the answer myself, edits as I go:</p>
  
  <ol>
  <li>Found <code>typedef Feature2D FeatureDetector</code> and <code>typedef Feature2D DescriptorExtractor</code> in <code>modules/features2d/include/opencv2/features2d.hpp</code></li>
  <li>Digging for <code>Feature2D</code> now...</li>
  <li>I'm so confused, my C++ is failing me, there is no <code>create</code> in <a href="https://github.com/Itseez/opencv/blob/master/modules/features2d/src/feature2d.cpp" rel="noreferrer">https://github.com/Itseez/opencv/blob/master/modules/features2d/src/feature2d.cpp</a> </li>
  <li>ok so just looking through the code ( <a href="https://github.com/Itseez/opencv/blob/master/modules/features2d/include/opencv2/features2d.hpp" rel="noreferrer">https://github.com/Itseez/opencv/blob/master/modules/features2d/include/opencv2/features2d.hpp</a> )
  
  <ul>
  <li>BRISK</li>
  <li>ORB</li>
  <li>MSER</li>
  <li>FastFeatureDetector / FAST</li>
  <li>AgastFeatureDetector / AGAST</li>
  <li>GFTTDetector</li>
  <li>SimpleBlobDetector</li>
  <li>KAZE / AKAZE</li>
  </ul></li>
  <li>and from the contrib code ( <a href="https://github.com/Itseez/opencv_contrib/blob/master/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp" rel="noreferrer">https://github.com/Itseez/opencv_contrib/blob/master/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp</a> )
  
  <ul>
  <li>FREAK </li>
  <li>StarDetector </li>
  <li>BriefDescriptorExtractor </li>
  <li>LUCID </li>
  <li>LATCH</li>
  <li>DAISY</li>
  <li>MSDDetector</li>
  </ul></li>
  <li>and from nonfree contrib code ( <a href="https://github.com/Itseez/opencv_contrib/blob/master/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp" rel="noreferrer">https://github.com/Itseez/opencv_contrib/blob/master/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp</a> )
  
  <ul>
  <li>SIFT</li>
  <li>SURF</li>
  </ul></li>
  <li>Still unsure which of the above can/should be used for FeatureDetector or DescriptorExtractor  </li>
  </ol>