2011-11-14 8 views
3

일부 이미지 일치를 위해 openCV를 사용하는 iPhone 프로젝트에서 작업 중입니다. 처음에는 cvMatchTemplate()을 사용했지만 결과는 기대 한 바가 아닙니다. 그래서 지금 FLANN을 사용하여 SURF 감지기를 구현하려고합니다.SurfDescriptorExtractor/featureDetector - IOS의 OpenCv

나는 포트에 목표 C에 다음의 .cpp 코드를 시도

,

//-- 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); 

하지만은 내가 필요한 모든 라이브러리와 헤더 파일을 포함에도 불구하고, 컴파일되지 수 있습니다. 자동 완성은 검출기는 내가 잘못 여기서 뭐하는 거지

class CV_EXPORTS FeatureDetector 
{ 
... 
} 

같은 헤더 파일에 정의되어

#include "opencv2/features2d/features2d.hpp" 

에있는 감지기 존재에 대한 옵션을 제공하지 않습니다? 감지기 클래스 (추상 기본 클래스)에서 메서드를 호출하는 방법에 대한 모든 입력이 필요합니까?

답변

1

아이폰에서 openCV를 사용하지 않았으므로 필자는 기능 감지기/설명자/매처를 사용할 때 다음과 같은 구문을 사용했습니다. 당신이 썼습니다 ...) :

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

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

그 스타일이 효과가 있습니까?

+0

위의 코드를 객관적인 C로 이식하려고하는 것으로 나타났습니다. 그런 경험이 없으므로 도움이되지 않습니다. 죄송합니다! – Chris