gpt4 book ai didi

c++ - 如何获取 std::vector 的大小

转载 作者:行者123 更新时间:2023-11-28 00:29:45 34 4
gpt4 key购买 nike

我正在做图像拼接,我遇到了下一个问题。

 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;
}

我调用了一个匹配器,在本例中是一个 BruteForce 匹配器,当我获得关键点之间的最小和最大距离时,程序崩溃了。我知道问题出在

matches[i].distance;

因为我认为这个对象是 NULL。问题是我不知道如何检查 matches[i] 是否存在。

最佳答案

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

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

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

关于c++ - 如何获取 std::vector <DMatch> 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23408842/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com