C++用OpenCV进行图片特征匹配
这篇文章主要介绍"C++用OpenCV进行图片特征匹配",在日常操作中,相信很多人在C++用OpenCV进行图片特征匹配问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++用OpenCV进行图片特征匹配"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
代码演示
我们再新建一个项目名为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的方法把我们画好的图片显示出来。
接下来我们看一下运行的结果图
到此,关于"C++用OpenCV进行图片特征匹配"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!