OpenCVにある画像認識のためのロジック、メジャー所で以下の3つ位
・ORB
・SURF
・SIFT
OpenCVは良く出来ていますので、3つの機能(クラス)は、共通のスーパークラスを持ちます。
実装の切り分けは簡単です。
こんなかんじ。
cv::FeatureDetector* pdetector = new cv::OrbFeatureDetector();
cv::DescriptorExtractor* pextractor = new OrbDescriptorExtractor();

ちなみに、OpenCVは全て無料では無いです。
"opencv2/nonfree/features2d.hpp"
↑のように、nonfreeフォルダがありますwww
・ORB     無料
・SURF 有料
・SIFT 有料

使った感じ
・ORB     しょぼい。無料だし、しょうがない
・SURF いい。
・SIFT いい。

こんな感じ。