如何获得std :: vector <dmatch> </dmatch>的大小

时间:2014-05-01 13:37:37

标签: c++ image-processing vector

我正在做图像stiching,我有下一个问题。

 BFMatcher matcher(NORM_HAMMING, true);
std::vector< DMatch > matches;
matcher.match( descriptors_1, descriptors_2, matches );

double max_dist = 0; double min_dist = 100;

  //-- Quick calculation of max and min distances between keypoints
cout<< "descr " << descriptors_1.rows << endl ;
  for( int i = 0; i < descriptors_1.rows; i++ )
  {

      double dist = matches[i].distance;

  //cout<<"La distancia es " << i<<endl;
    if( dist < min_dist && dist >3)
        {

            min_dist = dist;
        }
    if( dist > max_dist) max_dist = dist;
  }

我要求一个Matcher,在这种情况下是一个BruteForce Matcher,当我获得关键点之间的最小和最大距离时,程序崩溃了。我知道问题在于

matches[i].distance;

因为这个对象是NULL的东西。问题是我不知道如何检查匹配[i]是否存在。

1 个答案:

答案 0 :(得分:3)

据我所知,BFMatcher :: match()将匹配插入其第三个参数(一个std :: vector),作为第一个和第二个参数中的行数(我希望行数相等)。

在这种情况下,你的猜测可能不是崩溃的原因。

无论如何,要获得向量的大小:matches.size()将为您提供存储在向量中的DMatch对象的数量。