- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
以下代码是用 C++ 编写的,我在实验中使用 OpenCV。假设我按以下方式使用 kd-tree (FlannBasedMatcher):
//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() 函数的内部,问题就来了:
void FlannBasedMatcher::train()
{
if( flannIndex.empty() || mergedDescriptors.size() < addedDescCount )
{
mergedDescriptors.set( trainDescCollection );
flannIndex = new flann::Index( mergedDescriptors.getDescriptors(), *indexParams );
}
}
这两个操作(设置训练描述符和flann索引,我在调用train()之前已经完成)。那么kd-tree到底是什么时候建起来的呢?
最佳答案
当代码调用FlannBasedMatcher::train()时,FlannBasedMatcher的索引将由
flannIndex = new flann::Index( mergedDescriptors.getDescriptors(), *indexParams );
代码
if( flannIndex.empty() || mergedDescriptors.size() < addedDescCount )
是检查FlannBasedMatcher的索引是否已经建好,如果已经建好索引,train()函数会跳过建索引的过程,节省时间。
关于c++ - 在 OpenCV 的 FlannBasedMatcher 中,训练究竟发生在什么阶段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15047259/
一旦我添加到我的代码中 FlannBasedMatcher matcher; 构建时出现以下错误 g++ -o "track" ./track.o -lopencv_imgproc -lopencv_
如果训练图像集很大,训练 OpenCV DescriptorMatcher 可能是一项耗时的操作。因此,将经过训练的 DescriptorMatcher 数据保存到磁盘以供以后重新加载似乎是一件非常明
我遇到了一个问题: CV::FlannBasedMatcher更准确地说,使用 knnMatch 方法。我的程序将 IplImage* 作为输入并检测人脸,然后切割人脸并将创建的人脸与我计算机上存储的
在 OpenCV 中使用 FlannBasedMatcher,调用具有相同参数的匹配器时我得到了不同的结果。谁能建议我做错了什么? 下面的代码显示了我遇到的问题的最小示例 - 它是我如何使用 Flan
十字邮寄here 我注意到函数 FlannBasedMatcher::match 有一个参数 mask,所以我尝试使用以下代码: #include #include "opencv2/core/cor
openCVs flannBasedMatcher 使用哪个距离函数,是否可以更改默认值?在 Muja 和 Lowe 的原始 flann 用户手册中,有一些不同的距离类型 (flann_distanc
我正在按照教程 (https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_feature2d/py_matche
我想知道 openCV 中 BFMatcher 和 FlannBasedMatcher 在匹配精度或质量方面有何不同。我知道 FlannBasedMatcher 在应用于大型数据库时可能会更快,但是无
在 python 中,OpenCV 的 FlannBasedMatcher 构造函数采用参数字典,其中第一个是 algorithm。 The python tutorial建议可以通过传递不同命名的变
我正在尝试重写 here 中描述的代码.将 Python API 用于 Opencv。 代码的第 3 步有以下几行: FlannBasedMatcher matcher; std::vector
以下代码是用 C++ 编写的,我在实验中使用 OpenCV。假设我按以下方式使用 kd-tree (FlannBasedMatcher): //these are inputs to the code
我正在开发用于对象识别的乳房成像功能,使用 FlannBasedMatcher 计算空间直方图。 Mat ComputeSpatialHistogram(Mat features, Mat vocab
我正在尝试使用 OpenCV 的特征检测工具来确定小样本图像是否存在于较大的场景图像中。 我使用了 here 中的代码作为引用(没有单应部分)。 UIImage *sceneImage, *objec
我正在尝试使用 ORB 检测器/描述符和 Flann 或蛮力匹配器在更大的目标图像(allimg.jpg 包含 3 张面孔)中识别源图像(c1.jpg- 一张脸)。 c1.jpg 是通过裁剪/复制从
我正在尝试使用 SURF 和 kNN 对对象进行分类。该代码运行良好,但偶尔会崩溃并显示“段错误”。我不确定我是否做错了什么,但我很确定它已得到纠正。如果您想重现问题,这里是输入文件。 Link to
我想在 Python 中使用基于 flann 的匹配器,如 http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/p
我是一名优秀的程序员,十分优秀!