2

私は、OpenCV を使用して単純なテンプレート マッチング プログラムを作成しました。これは、Android と OSx で驚くほど異なる結果を生成します。

まず、私が何をしているかを見てください:

  IplImage *image = cvLoadImage("test3a.png", -1);
  Mat templateMat(image);

  // detecting keypoints
  OrbFeatureDetector detector(500);
  std::vector<KeyPoint> templateKeypoints;
  detector.detect(templateMat, templateKeypoints);

  // computing descriptors
  Mat templateDescriptors;
  OrbDescriptorExtractor extractor;
  extractor.compute(templateMat, templateKeypoints, templateDescriptors);

  // matches
  BFMatcher matcher(cv::NORM_HAMMING2);
  std::vector<std::vector<DMatch> > matches;
  matcher.knnMatch(templateDescriptors, templateDescriptors, matches, 2);


次に、私が得ているものを見てください:

Android 4.2.2 を実行している Nexus i9250 と OSx 10.7(Lion) で同じスニペットを実行すると、次の結果が得られます。

  • Mat オブジェクト: 両方の OS で同じ
  • キーポイント: [Android の場合][2]、[OSx の場合][3]、[違い][4]
  • 記述子: [Android の場合][5]、[OSx の場合][6]、[違い][7]
  • 一致: [Android の場合][8]、[OSx の場合][9]、[違い][10]

注: これらのファイルを並べ替えても違いはありません。それで、私が得ていないのは、なぜ異なる順序の結果が得られるのですか?? さらなる計算のために必要なので、それらを順番に取得することが私の要件です。さらに、同じプラットフォームで同じコード スニペットを実行すると、常に同じ順序の結果が生成されます。

Stackexchange では、私のアカウントは投稿に 2 つ以上のリンクを投稿するように制限されているため、リンクのコメントを確認してください。

4

0 に答える 0