• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2023-12-19
  • 语言: C/C++
  • 标签: SIFT  opencv  

资源简介

一个cpp文件。 功能:利用opencv库对SIFT角点进行提取,并进行匹配,最后画出匹配示意图。程序逻辑简单,可以在内部自由改动。

资源截图

代码片段和文件信息

#include   
#include   
#include “opencv2/core.hpp“  
#include “opencv2/core/utility.hpp“  
#include “opencv2/core/ocl.hpp“  
#include “opencv2/imgcodecs.hpp“  
#include “opencv2/highgui.hpp“  
#include “opencv2/features2d.hpp“  
#include “opencv2/calib3d.hpp“  
#include “opencv2/imgproc.hpp“  
#include“opencv2/flann.hpp“  
#include“opencv2/xfeatures2d.hpp“  
#include“opencv2/ml.hpp“  

using namespace std; 
using namespace cv; 
using namespace xfeatures2d;
using namespace cv::ml;

int main(int argc char** argv) 


Mat ab;
a = imread(“A.jpg“ 0); //读取要匹配的两张图像 
b = imread(“B.jpg“ 0);
vector matches;      //DMatch是用来描述匹配好的一对特征点的类,包含这两个点之间的相关信息                       
vector key1key2;     //关键点容器
Mat cd;   //sift描述子
Ptr sift = xfeatures2d::SIFT::create(0 3 0.04 10); //创建sift对象
BFMatcher matcher;         //实例化一个暴力匹配器

sift->detectAndCompute(a noArray() key1 c);    //给描述子赋值
sift->detectAndCompute(b noArray() key2 d); 
matcher.match(c d matches);             //匹配,数据来源是特征向量,结果存放在DMatch类型里面 

                                          //sort函数对数据进行升序排列
sort(matches.begin() matches.end());     //筛选匹配点,根据match里面特征对的距离从小到大排序
vector< D

评论

共有 条评论