2011-11-14 25 views
3

我正在使用openCV进行图像匹配的iphone项目。最初我使用cvMatchTemplate(),但输出结果并不符合我们的预期。所以我现在试图使用FLANN实现SURF检测器。SurfDescriptorExtractor/featureDetector - IOS中的OpenCv

我试图端口下面的.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

我没有专门在iPhone上使用openCV,所以不能帮助那里,但是当我使用特征检测器/描述符/匹配器时,我已经使用了下面的语法(它可能最终与你写的...):

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

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

这是否风格为你工作?

+0

刚注意到你正试图将上面的代码移植到目标C:我没有这方面的经验,所以不能帮你。抱歉! – Chris