SurfDescriptorExtractor / featureDetector - IOS中的OpenCv

时间:2011-11-14 10:38:16

标签: c++ objective-c ios opencv feature-detection

我正在开发一个使用openCV进行图像匹配的iphone项目。最初我使用的是cvMatchTemplate(),但输出不是我们预期的。所以我现在正尝试使用FLANN实现SURF探测器。

我尝试将以下.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 个答案:

答案 0 :(得分:1)

我没有专门在iphone上使用openCV,所以无法帮助,但是当我使用了功能检测器/描述符/匹配器时,我使用了以下语法(最终可能与你的相同)写了......):

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

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

这种风格适合你吗?