博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Surf特征点检测与匹配
阅读量:3977 次
发布时间:2019-05-24

本文共 1988 字,大约阅读时间需要 6 分钟。

#include 
#include
#include
#include
#include
#include
using namespace std;using namespace cv;vector
ransac(vector
queryKeyPoint,vector
trainKeyPoint,vector
matches);int main(int argc,char* argv[]){ //定义图像 Mat queryImage,trainImage; //读取图像 queryImage = imread("3.jpg",IMREAD_COLOR); trainImage = imread("4.jpg",IMREAD_COLOR); //判断是否读取图像 if(queryImage.empty() || trainImage.empty()) { cerr<<"Failure in loading image"<
queryKeyPoint,trainKeyPoint; //检测surf特征 surfDetector.detect(queryImage,queryKeyPoint); surfDetector.detect(trainImage,trainKeyPoint); //查看检测到的特征点的数目 cout<<"Number of queryKeyPoint:"<
<
bfMatches; vector
flannMatches; //Brute Match,穷举法求最近邻 BFMatcher bfMatcher; bfMatcher.match(queryDescriptor,trainDescriptor,bfMatches); //FlannBasedMatcher,最近邻近似匹配 FlannBasedMatcher flannMatcher; flannMatcher.match(queryDescriptor,trainDescriptor,flannMatches); //对匹配点进行RANSAC过滤 vector
ransac_BFMatches,ransac_FlannMatches; ransac_BFMatches=ransac(queryKeyPoint,trainKeyPoint,bfMatches); ransac_FlannMatches=ransac(queryKeyPoint,trainKeyPoint,flannMatches); //定义匹配图像 Mat bfMatchImage,flannMatchImage; //绘制匹配图像 //drawMatches(queryImage,queryKeyPoint,trainImage,trainKeyPoint,bfMatches,bfMatchImage); //drawMatches(queryImage,queryKeyPoint,trainImage,trainKeyPoint,flannMatches,flannMatchImage); drawMatches(queryImage,queryKeyPoint,trainImage,trainKeyPoint,ransac_BFMatches,bfMatchImage); drawMatches(queryImage,queryKeyPoint,trainImage,trainKeyPoint,ransac_FlannMatches,flannMatchImage); //显示匹配结果 imshow("BFMatch",bfMatchImage); imshow("FlannMatch",flannMatchImage); waitKey(0); return 0;}vector
ransac(vector
queryKeyPoint,vector
trainKeyPoint,vector
matches){ cout<<"ransac前:"<
<
queryPoints(matches.size()),trainPoints(matches.size()); for(int i=0;i
inlierMask(matches.size()); vector
ransac_matches; H = findHomography(queryPoints,trainPoints,CV_RANSAC,3,inlierMask); for(int i=0;i

SURF原理:

匹配结果:

你可能感兴趣的文章
Linux设备驱动调试技术 3
查看>>
系统处理&nbsp;IRQ_EINT0&nbsp;IRQ_EIN…
查看>>
系统处理&nbsp;IRQ_EINT0&nbsp;IRQ_EIN…
查看>>
misc_register和register_ch…
查看>>
misc_register和register_ch…
查看>>
misc_register和register_ch…
查看>>
misc_register和register_ch…
查看>>
platform设备添加流程(转载)
查看>>
platform设备添加流程(转载)
查看>>
GCC编译关键字“__attribute_…
查看>>
GCC编译关键字“__attribute_…
查看>>
Linux对I/O端口资源的管理(&nbsp;…
查看>>
Linux对I/O端口资源的管理(&nbsp;…
查看>>
[转载]Linux内核中的platfor…
查看>>
顺序和屏障&nbsp;收藏
查看>>
Linux&nbsp;PCI驱动模型
查看>>
S3C2440上触摸屏驱动实例开发讲解(…
查看>>
Android驱动例子(LED灯控制)(1…
查看>>
第二章&nbsp;Android内核和驱动程序(转)
查看>>
第一章&nbsp;Android系统介绍
查看>>