SurfDescriptorExtractor / featureDetector - OpenCv в IOS - PullRequest
3 голосов
/ 14 ноября 2011

Я работаю над проектом для iPhone, который использует openCV для сопоставления некоторых изображений. Первоначально я использовал cvMatchTemplate (), но на выходе получилось не то, что мы ожидали. поэтому я сейчас пытаюсь реализовать детектор SURF с использованием FLANN.

Я попытался перенести следующий код .cpp на цель C,

//-- Step 2: Calculate descriptors (feature vectors)
  SurfDescriptorExtractor extractor;

  Mat descriptors_1, descriptors_2;

  extractor.compute( img_1, keypoints_1, descriptors_1 );
  extractor.compute( img_2, keypoints_2, descriptors_2 );

  //-- Step 3: Matching descriptor vectors using FLANN matcher
  FlannBasedMatcher matcher;
  std::vector< DMatch > matches;
  matcher.match( descriptors_1, descriptors_2, matches );

Но не удалось его скомпилировать, хотя у меня есть все необходимые библиотеки и заголовочные файлы. Автозаполнение также не дает опций для любых детекторов, присутствующих в

#include "opencv2/features2d/features2d.hpp"

Детектор определяется в заголовочном файле как

class CV_EXPORTS FeatureDetector
{
...
}

Что я здесь не так делаю? Любые входные данные о том, как вызывать методы в классе детектора (абстрактный базовый класс)?

1 Ответ

1 голос
/ 14 ноября 2011

Я не использовал openCV на iphone специально, поэтому не могу помочь, но когда я использовал детектор / дескриптор / сопоставитель функций, я использовал следующий синтаксис (который может оказаться таким же, как вы написал ...):

cv::Ptr<cv::DescriptorExtractor> extractor;
extractor = cv::DescriptorExtractor::create("SURF");

cv::Ptr<cv::DescriptorMatcher> matcher;
matcher = cv::DescriptorMatcher::create("FlannBased");

Этот стиль работает для вас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...