OpenCV:Android和OSx上运行相同代码的问题

时间:2013-02-26 10:13:56

标签: android opencv template-matching feature-descriptor

我使用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和OSx 10.7(Lion)的Nexus i9250上运行相同的代码段会显示以下结果:

  
      
  • Mat Objects:两个操作系统上相同
  •   
  • 关键点:[在Android上] [2],[在OSx上] [3],[差异] [4]
  •   
  • 描述符:[在Android上] [5],[On OSx] [6],[DIFFERENCE] [7]
  •   
  • 匹配:[在Android上] [8],[On OSx] [9],[DIFFERENCE] [10]
  •   

注意: 如果我对这些文件进行排序,没有区别;所以我没有得到的是,为什么我得到不同的有序结果? 按顺序获取它们是我的要求,因为我需要进一步计算。 此外,在同一平台上运行相同的代码片段始终会生成相同的有序结果。

Stackexchange限制我的帐户在帖子中发布超过2个链接,因此请检查链接的评论。

0 个答案:

没有答案