資源簡介
一個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
評論
共有 條評論