前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ OpenCV特征提取之FLANN特征匹配

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

作者头像
Vaccae
发布2019-07-24 11:00:59
2K0
发布2019-07-24 11:00:59
举报
文章被收录于专栏:微卡智享微卡智享

前言

前面我们学了《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寻找的更好,而且速度也比上一章的快了好多。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档