C++ OpenCV特征提取之FLANN特征匹配

前言

前面我们学了《C++ OpenCV特征提取之BFMatcher匹配》BFMatcher的匹配,这一章我们看一下FLANN的特征匹配。

FLANN 是快速最近邻搜索包(Fast_Library_for_Approximate_Nearest_Neighbors)的简称。它是一个对大数据集和高维特征进行最近邻搜索的算法的集合,而且这些算法都已经被优化过了。在面对大数据集时它的效果要好于 BFMatcher。

代码演示

我们再新建一个项目名为opencv--FLANN,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法

这次我们在加载图片的时候直接以灰度图的方式加载进来,后面就不再用先转换为灰度图的过程了。然后我们运行一下看看加载出来的图片效果。

1.我们还是先用Surf特征进行检测,因为这个相对速度会快,把我们对两张图片获取的KeyPoint放到各自对应的descriptor里面。

2.根据上一步已经提取出的descriptor的两个Mat,通过FlannBaseMatcher进行最佳匹配,存放到我们定义的一个DMatch里面。

3.定义minDist和maxDist,然后通过循环进行关键点最大和最小距离的快速计算,并找印出结果来。

4.根据最大最小的距离里面寻找最佳的matches。下面的红框3是可以自己修改的,改的大了点就会多一些。

5.我们先定义一个输出的图像matchesImg,然后通过drawMatches的方法,把最好的匹配点都画在matchesImg上,最后再通过imshow的方法把我们画好的图片显示出来。


接下来我们看一下运行的结果图

可以看到上图中寻找的最好的匹配点比较不错,相比于我们前面学的BFMatcher寻找的更好,而且速度也比上一章的快了好多。


-END-

长按下方二维码关注微卡智享

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vaccae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值