gpt4 book ai didi

opencv - 没有可用于 cv::flann::Index::knnSearch() 的资源

转载 作者:太空宇宙 更新时间:2023-11-03 23:18:09 27 4
gpt4 key购买 nike

我正在尝试在 OpenCV 中实现 Flann 索引。让我逐步讲述我的实现:

1) 我从图像中提取 SURF 特征并将所有特征连接起来。然后像这样保存描述符和 flann 索引:

FileStorage fs("descriptors.yml", FileStorage::WRITE);
write(fs, "descriptors", descriptors);
flann_index_saved.save("tmp_twitter.fln");

2) 我从查询图像中提取了 SURF 特征。

3) 我像这样加载了 flann 索引:

FileStorage fsRead(yamlFile, FileStorage::READ);
Mat indexMat(Size(64, sampleSize), CV_32FC1);
fsRead["descriptors"] >> indexMat;
Index flann_index_loaded;
flann_index_loaded.load(indexMat, indexFilePath);

4)为了匹配,我使用了knnSearch:

Mat queryDesc, indicesResult, distsResults;
fIndex.knnSearch(queryDesc, indicesResult, distsResults, 1);

但是没有任何反应。仅发生“无可用资源...”异常。我想我无法在 OpenCV 中实现 Flann。

我正在使用 Ubuntu 12.04、OpenCV 2.4.10、Eclipse CDT+。

请帮帮我...

最佳答案

我解决了这个问题。让我回答我自己的问题:)

1) 我从火车图像中提取 SURF 特征并将所有特征连接起来。然后像这样保存描述符和 flann 索引:

 Index flannIndex;
Mat indexDescriptors;
IndexParams indexParams;
indexParams = *new KMeansIndexParams();
flannIndex = *new Index(indexDescriptors, indexParams);
FileStorage fs(descriptorName, FileStorage::WRITE);
write(fs, "descriptors", indexDescriptors);
flannIndex.save(indexName);

2) 我从查询图像中提取了 SURF 特征。

3) 我像这样加载了 flann 索引:

 Index flannIndexSaved;
IndexParams indexParamsSaved;
Mat indexMat;
indexMat = Mat(Size(64, sampleSize), CV_32F);
FileStorage fs(yamlFile, FileStorage::READ);
fs["descriptors"] >> indexMat;
indexParamsSaved = *new SavedIndexParams(indexFilePath);
flannIndexSaved = *new Index(indexMat, indexParamsSaved);

4)为了匹配,我使用了knnSearch:

 Mat queryDesc, indicesResult, distsResults;
flannIndexSaved.knnSearch(queryDesc, indicesResult, distsResults, 1);

这很好用:)

关于opencv - 没有可用于 cv::flann::Index::knnSearch() 的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35670249/

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