3

画像マッチングにopenCVを使用するiphoneプロジェクトに取り組んでいます。最初は cvMatchTemplate() を使用していましたが、出力が期待どおりではありませんでした。そのため、FLANN を使用して SURF 検出器を実装しようとしています。

次の .cpp コードを Objective 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
{
...
}

ここで何が間違っていますか?ディテクタ クラス (抽象基本クラス) でメソッドを呼び出す方法に関する情報はありますか?

4

1 に答える 1

1

特にiphoneでopenCVを使用したことがないので、そこでは役に立ちませんが、機能検出器/記述子/マッチャーを使用したときは、次の構文を使用しました(これは、あなたが書いたものと同じになる可能性があります) ...):

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

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

そのスタイルはあなたに合っていますか?

于 2011-11-14T14:18:38.600 に答える