我如何在OpenCV 3.2.0中使用bruteforce匹配
How can I use BruteForce Matching in openCV 3.2.0?
我正在使用opencv 3.2.0,并且我正在尝试分别具有检测,描述符计算和描述符与快速,轻快,蛮力的描述符。我正在与Visual Studio 2017一起使用C 。
std::vector<KeyPoint> keypoints1, keypoints2;
cv::Mat descriptors1, descriptors2;
m_image_A = imread("a.bmp", IMREAD_GRAYSCALE);
m_image_B = imread("b.bmp", IMREAD_GRAYSCALE);
cv::Ptr<cv::FeatureDetector> a = cv::FastFeatureDetector::create();
a->detect(m_image_A, keypoints1);
a->detect(m_image_B, keypoints2);
cv::Ptr<cv::DescriptorExtractor> ex = cv::BRISK::create();
ex->compute(m_image_A, keypoints1, descriptors1);
ex->compute(m_image_B, keypoints2, descriptors2);
cv::Ptr<cv::DescriptorMatcher> matcher;
std::vector<vector<DMatch>> matches;
matcher = cv::BFMatcher::create();
matcher->knnMatch(descriptors1, descriptors2, matches, 2);
这是我为此简单的代码,并且无法正常运行。我阅读了许多代码和提示,但是找不到解决问题的适当解决方案。
有人可以帮助我吗?如何使其正确操作?
如果此方法确实不起作用,请使用基于绒布的方法按照统一方法。它将为您提供关键点之间距离的确切结果,以及以任何形式的角度真正匹配的点。
bfmatcher构造函数具有参数normType。
BFMatcher::create(NORM_HAMMING, false);
对于筛分和冲浪,可以应用标准的L1规范,但应使用norm_hamming的文档说明(https://docs.opencv.org/3.4.0/da/da/da1/classcv_1_1_1_1bfmatcher.html)。也许这解决了问题。但是显然,您必须说明您的解决方案"无法正常运行"的含义。
尝试不同的描述符和匹配技术组合时,我遇到的另一个问题是,某些描述符以二进制格式保存,因此不能轻松地使用标准匹配方法进行后处理。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 基于ELO的团队匹配算法
- 没有用于初始化C++中的变量模板的匹配构造函数
- 调用'begin(int [n])'没有匹配函数
- 将模板与类模板扣除占位符参数匹配
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 'max'匹配'std::function<const int &(const int &, const int &)>'无过载
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- Qt SQLite没有查询或参数计数不匹配
- 模板参数推导失败,函数参数/参数不匹配
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 在使用累加时,C++中的运算符+不匹配
- 错误:调用'getline'没有匹配函数
- C++ 与操作员不匹配<<
- 我怎样才能将所有子目录与 cmake 自动匹配
- C++:编译时检查匹配的函数调用对?
- 匹配函数指针作为模板参数?
- 我如何在OpenCV 3.2.0中使用bruteforce匹配
- ORB/BruteForce绘图在没有匹配时匹配
- LSH比BruteForce匹配慢