首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >培训具体在OpenCV中的FlannBasedMatcher中进行的哪个阶段进行?

培训具体在OpenCV中的FlannBasedMatcher中进行的哪个阶段进行?
EN

Stack Overflow用户
提问于 2013-02-24 08:15:53
回答 2查看 1.8K关注 0票数 1

下面的代码是用C++编写的,我在实验中使用了OpenCV。假设我以以下方式使用kd-tree (FlannBasedMatcher):

代码语言:javascript
复制
//these are inputs to the code snippet below. 
//They are filled with suitable values
Mat& queryDescriptors;
vector<Training> &trainCollection;
vector< vector<DMatch> >& matches;
int knn;

//setting flann parameters
const Ptr<flann::IndexParams>& indexParams=new flann::KDTreeIndexParams(4);
const Ptr<flann::SearchParams>& searchParams=new flann::SearchParams(64);
FlannBasedMatcher matcher(indexParams, searchParams);

for (int i = 0; i < trainCollection.size();i++){
    Training train = trainCollection.at(i);  
    Mat trainDescriptors(train.trainDescriptors);
    trainDescriptorCollection.push_back(trainDescriptors);
}
matcher.add(trainDescriptorCollection);
matcher.train();

//Now, we may do knnMatch (or anyother matching) 
matcher.knnMatch(queryDescriptors,matches,knn);

在上面的代码中,训练似乎是在调用train()函数时进行的(即构建了kd-tree )。但是,如果我们看一下train()函数内部,就会发现问题所在:

代码语言:javascript
复制
void FlannBasedMatcher::train()
{
    if( flannIndex.empty() || mergedDescriptors.size() < addedDescCount )
    {
        mergedDescriptors.set( trainDescCollection );
        flannIndex = new flann::Index( mergedDescriptors.getDescriptors(), *indexParams );
    }
}

这两个操作(设置训练描述符和flann索引,我在调用train()之前已经做过了)。那么,kd-tree到底是什么时候构建的呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-12 21:41:26

当代码调用FlannBasedMatcher::train()时,FlannBasedMatcher的索引将由

代码语言:javascript
复制
flannIndex = new flann::Index( mergedDescriptors.getDescriptors(), *indexParams );

代码

代码语言:javascript
复制
if( flannIndex.empty() || mergedDescriptors.size() < addedDescCount )

为了检查是否已经建立了FlannBasedMatcher的索引,before.If ()函数将跳过构建索引的过程,以节省时间。

票数 3
EN

Stack Overflow用户

发布于 2013-03-04 20:42:14

the documentation中,训练(即,在构建kd-tree的cae中)在每次匹配之前都会完成。cv::DescriptorMatcher类在需要时自动调用训练方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15047259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档