OpenCV中匹配的阈值';s描述符

OpenCV中匹配的阈值';s描述符,opencv,Opencv,有没有办法为OpenCV的features2d中由DescriptorMatcher计算的潜在匹配图像描述符对设置阈值 详细地说,我有一个Bruteforce匹配器,我想用它来计算两个图像的描述符对,并且只有最小距离为阈值的对才应该进行匹配 BFMatcher matcher(NORM_L2, true); vector<DMatch> matches; matcher.match(descriptors1, descriptors2, matches); BFMatcher匹配器

有没有办法为OpenCV的features2d中由DescriptorMatcher计算的潜在匹配图像描述符对设置阈值

详细地说,我有一个Bruteforce匹配器,我想用它来计算两个图像的描述符对,并且只有最小距离为阈值的对才应该进行匹配

BFMatcher matcher(NORM_L2, true);
vector<DMatch> matches;
matcher.match(descriptors1, descriptors2, matches);
BFMatcher匹配器(NORM_L2,true);
向量匹配;
匹配(描述符1,描述符2,匹配);

谢谢你的帮助

好的,所以我又读了一些书,发现了一些有趣的帖子,比如并找到了我自己的方法;-)

首先,我使用FlannBasedMatcher来匹配计算出的描述符。之后,我对匹配项进行排序(默认情况下,它们按距离升序排序)。创建了第二个DMatch向量,并添加了距离低于我选择的距离阈值的匹配项。就这样。通过这种方式,我还可以选择与它匹配的前N个阈值,该阈值被选为“坏”


可能不是最好的/最干净的方法,但它是一个快速解决方案,适合原型情况。

好的,所以我读了更多的书,发现了一些有趣的帖子,如并找到了我自己的方法;-)

首先,我使用FlannBasedMatcher来匹配计算出的描述符。之后,我对匹配项进行排序(默认情况下,它们按距离升序排序)。创建了第二个DMatch向量,并添加了距离低于我选择的距离阈值的匹配项。就这样。通过这种方式,我还可以选择与它匹配的前N个阈值,该阈值被选为“坏”


可能不是最好/最干净的方法,但它是一种快速解决方案,适用于原型情况。

使用radiusMatch而不是match

matcher.radiusMatch(descriptors1, descriptors2, matches, your-threshold);

使用半径匹配代替匹配

matcher.radiusMatch(descriptors1, descriptors2, matches, your-threshold);

错。文档中说:“对于每个查询描述符,查找的训练描述符不超过指定的距离。”,而OP只询问最小距离为阈值的配对。我运行了代码。请不要只根据文档来回答问题。源代码中清楚地说明了maxDistance:“不超过指定距离的描述符”和“最小距离为阈值的配对”之间到底有什么区别?虽然我同意@aledalgrande,但这个解决方案似乎会超出匹配的目的,所以我认为jstr实际上意味着最大值,在这种情况下,Moe的解决方案应该有效。错误。文档中说:“对于每个查询描述符,查找的训练描述符不超过指定的距离。”,而OP只询问最小距离为阈值的配对。我运行了代码。请不要只根据文档来回答问题。源代码中清楚地说明了maxDistance:“不超过指定距离的描述符”和“最小距离为阈值的配对”之间到底有什么区别?虽然我同意@aledalgrande,但这个解决方案似乎会超出匹配的目的,所以我认为jstr实际上意味着最大值,在这种情况下,Moe的解决方案应该有效。