下面是编程之家 jb51.cc 通过网络收集整理的代码片段。
编程之家小编现在分享给大家,也给大家做个参考。
//freak.cpp
#include "stdafx.h"
#include
#include
#include "utils.h"
#include
using namespace std;
void freak(char* path1,char* path2,INFO& info,bool show)
{
double t1,t2;
t1=cvGetTickCount();
initModule_nonfree();
Mat img1,img2;
img1=imread(path1,0);
img2=imread(path2,0);
if(img1.data==NULL)
{
cout<
system("pause");
exit(-1);
}
if(img2.data==NULL)
{
cout<
system("pause");
exit(-1);
}
vector kpts1_freak,kpts2_freak;
Mat desc1_freak,desc2_freak;
Ptr<:descriptormatcher> matcher_l1 = DescriptorMatcher::create("BruteForce-Hamming"); //二进制汉明距离匹配
vector > dmatches_freak;
vector matches_freak,inliers_freak;
SurfFeatureDetector dfreak(200,4);
dfreak.detect(img1,kpts1_freak);
dfreak.detect(img2,kpts2_freak);
info.n1 = kpts1_freak.size();
info.n2 = kpts2_freak.size();
FREAK freak;
freak.compute(img1,kpts1_freak,desc1_freak);
freak.compute(img2,kpts2_freak,desc2_freak);
matcher_l1->knnMatch(desc1_freak,desc2_freak,dmatches_freak,2);
matches2points_nndr(kpts1_freak,matches_freak,DRATIO);
info.m=matches_freak.size()/2;
compute_inliers_ransac(matches_freak,inliers_freak,MIN_H_ERROR,false);
info.rm=inliers_freak.size()/2;
t2=cvGetTickCount();
info.t=(t2-t1)/1000000.0/cvGetTickFrequency();
Mat img1_rgb_freak = imread(path1,1);
Mat img2_rgb_freak = imread(path2,1);
Mat img_com_freak = Mat(Size(img1.cols*2,img1.rows),CV_8UC3);
if(show == true)
{
draw_inliers(img1_rgb_freak,img2_rgb_freak,img_com_freak,2);
imshow("freak",img_com_freak);
waitKey(0);
}
return;
}
使用
INFO freak_info;
freak(path1,path2,freak_info,true);
showInfo(freak_info);
以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!