資源簡(jiǎn)介
一個(gè)cpp文件。
功能:利用opencv庫(kù)對(duì)SIFT角點(diǎn)進(jìn)行提取,并進(jìn)行匹配,最后畫出匹配示意圖。程序邏輯簡(jiǎn)單,可以在內(nèi)部自由改動(dòng)。
代碼片段和文件信息
#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是用來(lái)描述匹配好的一對(duì)特征點(diǎn)的類,包含這兩個(gè)點(diǎn)之間的相關(guān)信息 ??????????????????????
vector?key1key2;?????//關(guān)鍵點(diǎn)容器
Mat?cd;???//sift描述子
Ptr?sift?=?xfeatures2d::SIFT::create(0?3?0.04?10);?//創(chuàng)建sift對(duì)象
BFMatcher?matcher;?????????//實(shí)例化一個(gè)暴力匹配器
sift->detectAndCompute(a?noArray()?key1?c);????//給描述子賦值
sift->detectAndCompute(b?noArray()?key2?d);?
matcher.match(c?d?matches);?????????????//匹配,數(shù)據(jù)來(lái)源是特征向量,結(jié)果存放在DMatch類型里面?
??????????????????????????????????????????//sort函數(shù)對(duì)數(shù)據(jù)進(jìn)行升序排列
sort(matches.begin()?matches.end());?????//篩選匹配點(diǎn),根據(jù)match里面特征對(duì)的距離從小到大排序
vector
評(píng)論
共有 條評(píng)論