C++ C++/OpenCV-使用flann::index后如何获取图像?(带转炉)
我使用BoW和SURF以及FlannBasedMatcher在数据库中进行图像检索。 我使用SURF提取了数据库(训练)中的所有特征,然后构建词汇表,最后得到数据库(训练)中每个图片的BOF频率直方图 说清楚一点,我没有把整个过程的细节都说出来,但是如果你需要一些细节,请告诉我 因此,在这一步中,我有:C++ C++/OpenCV-使用flann::index后如何获取图像?(带转炉),c++,opencv,matching,flann,C++,Opencv,Matching,Flann,我使用BoW和SURF以及FlannBasedMatcher在数据库中进行图像检索。 我使用SURF提取了数据库(训练)中的所有特征,然后构建词汇表,最后得到数据库(训练)中每个图片的BOF频率直方图 说清楚一点,我没有把整个过程的细节都说出来,但是如果你需要一些细节,请告诉我 因此,在这一步中,我有: cv::Mat all描述符-->我的all数据库的描述符(培训) cv::Mat词汇表-->码本表示法 cv::Mat responseDatabase-->我的数据库中每个图片的频率直方图
- cv::Mat all描述符-->我的all数据库的描述符(培训)
- cv::Mat词汇表-->码本表示法
- cv::Mat responseDatabase-->我的数据库中每个图片的频率直方图
- cv::Mat responseQuery-->我的查询的频率直方图
- cv::Mat结果-->[38117] -
- cv::Mat dist-->[0.0010655867,0.013091294]
谢谢我解决了这个问题,但我不知道这是不是最好的办法 计算每个图像后,如下所示:
bowide.compute(img,keypoints,responseHist);
我将图片保存在一个大矢量中,因此,我可以加载它们进行匹配
vectorImg.push_back(img);
问题是,我必须将每张图片的名称保存在txt文件中,然后在匹配过程中读取txt文件。(以便加载它们)
实际上,数据库中每个图像的BoWFeature的计算只进行了一次,我不想每次都运行相同的过程,我想将查询与数据库进行比较。因此,一旦我的数据库经过训练,我只能进行匹配,因为我在一个txt文件中有我所有的图片和一个索引。responseQuery是如何初始化的?需要更多的代码。无论如何,我猜结果中的索引应该以某种方式与图像数据库索引匹配,如果不完全匹配的话。因此,图像38应该是最接近您的查询点的匹配。
vectorImg.push_back(img);