基于ORB算法的特征提取和匹配(VS2015+OpenCV2.4.9)


本VS工程是基于ORB算法的特征提取和匹配,搭建环境为:VS2015+OpenCV2.4.9。
资源截图
代码片段和文件信息
#include   
#include   
#include   
#include   
#include   
#include   

using namespace cv;
using namespace std;
int main()
{
Mat img_1 = imread(“.\imagedata\beaver.png“);
Mat img_2 = imread(“.\imagedata\beaver_xform.png“);
/*Mat img_1 = imread(“.\imagedata\beaver.png“);
Mat img_2 = imread(“.\imagedata\beaver_xform.png“);*/
if (!img_1.data || !img_2.data)
{
cout << “error reading images “ << endl;
return -1;
}

ORB orb;
vector keyPoints_1 keyPoints_2;
Mat descriptors_1 descriptors_2;

orb(img_1 Mat() keyPoints_1 descriptors_1);
orb(img_2 Mat() keyPoints_2 descriptors_2);

BruteForceMatcher matcher;
vector matches;
matcher.match(descriptors_1 descriptors_2 matches);

double max_dist = 0; double min_dist = 100;
//-- Quick calculation of max and min distances between keypoints  
for (int i = 0; i < descriptors_1.rows; i++)
{
double dist = matches[i].distance;
if (dist < min_dist) min_dist = dist;
if (dist > max_dist) max_dist = dist;
}
printf(“-- Max dist : %f 
“ max_dist);
printf(“-- Min dist : %f 
“ min_dist);
//-- Draw only “good“ matches (i.e. whose distance is less than 0.6*max_dist )  
//-- PS.- radiusMatch can also be used here.  
std::vector< DMatch > good_matches;
for (int i = 0; i < descriptors_1.rows; i++)
{
if (matches[i].distance < 0.6*max_dist)
{
good_matches.push_back(matches[i]);
}
}

Mat img_matches;
drawMatches(img_1 keyPoints_1 img_2 keyPoints_2
good_matches img_matches Scalar::all(-1) Scalar::all(-1)
vector() DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS);
imshow(“Match“ img_matches);
cvWaitKey();
return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-03-24 23:40  orb_match
     目录           0  2019-01-09 16:39  orb_match.vs
     目录           0  2019-01-09 16:39  orb_match.vssift_process
     目录           0  2019-01-09 16:39  orb_match.vssift_processv14
     文件       60928  2019-03-24 23:40  orb_match.vssift_processv14.suo
     目录           0  2019-03-24 23:40  orb_matchsift_process
     目录           0  2019-03-24 23:40  orb_matchsift_processimagedata
     文件       48824  2010-05-21 12:48  orb_matchsift_processimagedataeaver.png
     文件       39513  2010-05-21 12:48  orb_matchsift_processimagedataeaver_xform.png
     目录           0  2019-03-24 23:40  orb_matchsift_processmatch
     文件       48824  2010-05-21 12:48  orb_matchsift_processmatcheaver.png
     文件       39513  2010-05-21 12:48  orb_matchsift_processmatcheaver_xform.png
     文件        1838  2019-03-24 23:40  orb_matchsift_processmatchmatch.cpp
     文件        8825  2019-01-09 16:48  orb_matchsift_processsift_process.vcxproj
     文件         952  2019-01-09 16:48  orb_matchsift_processsift_process.vcxproj.filters
     文件         165  2018-08-29 16:19  orb_matchsift_processsift_process.vcxproj.user
     文件    43515904  2018-11-29 08:52  orb_matchsift_process.sdf
     文件        1318  2018-08-29 16:17  orb_matchsift_process.sln
     文件    15167488  2019-03-24 23:40  orb_matchsift_process.VC.db

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)