91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

VS2012 x64+opencv做的圖像拼接,參照了別人的代碼改編。 做的是左右拼接,上下的行不行沒試過。 主要函數就是圖像的儲存位置,需要在代碼里改下 測試了下還是比較穩健的,拼接效果尚可,不過重疊部分可能產生鬼影,另外接縫處有小裂縫,如果不滿意,可再設計方法優化 所有代碼均含注釋,淺顯易懂,含測試圖片 運行時請自行配置好頭文件和lib文件目錄

資源截圖

代碼片段和文件信息

#include?
#include?
#include???
#include???
#include?
#include?
#include???
#include???

using?namespace?cv;?
using?namespace?std;?

int?main()
{
initModule_nonfree();//初始化模塊,使用SIFT或SURF時用到?
Ptr?detector?=?FeatureDetector::create(?“SURF“?);//創建SIFT特征檢測器,可改成SURF/ORB
PtrriptorExtractor>?descriptor_extractor?=?DescriptorExtractor::create(?“SURF“?);//創建特征向量生成器,可改成SURF/ORB
PtrriptorMatcher>?descriptor_matcher?=?DescriptorMatcher::create(?“BruteForce“?);//創建特征匹配器??
if(?detector.empty()?||?descriptor_extractor.empty()?)??
cout<<“fail?to?create?detector!“;??

//讀入圖像??
Mat?img1?=?imread(“E://1.jpg“);??
Mat?img2?=?imread(“E://2.jpg“);??

//特征點檢測??
double?t?=?getTickCount();//當前滴答數??
vector?m_LeftKeym_RightKey;??
detector->detect(?img1?m_LeftKey?);//檢測img1中的SIFT特征點,存儲到m_LeftKey中??
detector->detect(?img2?m_RightKey?);??
cout<<“圖像1特征點個數:“< cout<<“圖像2特征點個數:“<
//根據特征點計算特征描述子矩陣,即特征向量矩陣??
Mat?descriptors1descriptors2;??
descriptor_extractor->compute(?img1?m_LeftKey?descriptors1?);??
descriptor_extractor->compute(?img2?m_RightKey?descriptors2?);??
t?=?((double)getTickCount()?-?t)/getTickFrequency();??
cout<<“SIFT算法用時:“<
cout<<“圖像1特征描述矩陣大小:“<riptors1.size()??
<<“,特征向量個數:“<riptors1.rows<<“,維數:“<riptors1.cols< cout<<“圖像2特征描述矩陣大小:“<riptors2.size()??
<<“,特征向量個數:“<riptors2.rows<<“,維數:“<riptors2.cols<
//畫出特征點??
Mat?img_m_LeftKeyimg_m_RightKey;??
drawKeypoints(img1m_LeftKeyimg_m_LeftKeyScalar::all(-1)0);??
drawKeypoints(img2m_RightKeyimg_m_RightKeyScalar::all(-1)0);??
//imshow(“Src1“img_m_LeftKey);??
//imshow(“Src2“img_m_RightKey);??

//特征匹配??
vector?matches;//匹配結果??
descriptor_matcher->match(?descriptors1?descriptors2?matches?);//匹配兩個圖像的特征矩陣??
cout<<“Match個數:“<
//計算匹配結果中距離的最大和最小值??
//距離是指兩個特征向量間的歐式距離,表明兩個特征的差異,值越小表明兩個特征點越接近??
double?max_dist?=?0;??
double?min_dist?=?100;??
for(int?i=0;?i {??
double?dist?=?matches[i].distance;??
if(dist? if(dist?>?max_dist)?max_dist?=?dist;??
}??
cout<<“最大距離:“< cout<<“最小距離:“<
//篩選出較好的匹配點??
vector?goodMatches;??
for(int?i=0;?i {??
if(matches[i].distance? {??
goodMatches.push_back(matches[i]);??
}??
}??
cout<<“goodMatch個數:“<
//畫出匹配結果??
Mat?img_matches;??
//紅色連接的是匹配的特征點對,綠色是未匹配的特征點??
drawMatches(img1m_LeftKeyimg2m_RightKeygoodMatchesimg_matches??
Scalar::all(-1)/*CV_RGB(25500)*/CV_RGB(02550)Mat()2);??

imshow(“MatchSIFT“img_matches);??
IplImage?result=

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-04-09?21:15??SIFT_RANSAC\
?????目錄???????????0??2014-04-09?13:52??SIFT_RANSAC\Debug\
?????文件?????2591744??2014-04-09?13:51??SIFT_RANSAC\Debug\SIFT_RANSAC.pdb
?????目錄???????????0??2014-04-09?12:47??SIFT_RANSAC\Release\
?????文件???????38400??2014-04-09?12:47??SIFT_RANSAC\Release\SIFT_RANSAC.exe
?????文件?????1428480??2014-04-09?12:47??SIFT_RANSAC\Release\SIFT_RANSAC.pdb
?????目錄???????????0??2014-04-09?13:56??SIFT_RANSAC\SIFT_RANSAC\
?????文件????15925248??2014-04-09?21:15??SIFT_RANSAC\SIFT_RANSAC.sdf
?????文件????????1254??2014-04-01?20:39??SIFT_RANSAC\SIFT_RANSAC.sln
?????文件???????23552??2014-04-09?21:15??SIFT_RANSAC\SIFT_RANSAC.v11.suo
?????目錄???????????0??2014-04-09?13:52??SIFT_RANSAC\SIFT_RANSAC\Debug\
?????文件?????????632??2014-04-09?13:33??SIFT_RANSAC\SIFT_RANSAC\Debug\cl.command.1.tlog
?????文件???????24170??2014-04-09?13:33??SIFT_RANSAC\SIFT_RANSAC\Debug\CL.read.1.tlog
?????文件?????????360??2014-04-09?13:33??SIFT_RANSAC\SIFT_RANSAC\Debug\CL.write.1.tlog
?????文件???????????2??2014-04-09?13:52??SIFT_RANSAC\SIFT_RANSAC\Debug\link-cvtres.read.1.tlog
?????文件???????????2??2014-04-09?13:52??SIFT_RANSAC\SIFT_RANSAC\Debug\link-cvtres.write.1.tlog
?????文件???????????2??2014-04-09?13:52??SIFT_RANSAC\SIFT_RANSAC\Debug\link-rc.read.1.tlog
?????文件???????????2??2014-04-09?13:52??SIFT_RANSAC\SIFT_RANSAC\Debug\link-rc.write.1.tlog
?????文件???????????2??2014-04-09?13:52??SIFT_RANSAC\SIFT_RANSAC\Debug\link.command.1.tlog
?????文件???????????2??2014-04-09?13:52??SIFT_RANSAC\SIFT_RANSAC\Debug\link.read.1.tlog
?????文件???????????2??2014-04-09?13:52??SIFT_RANSAC\SIFT_RANSAC\Debug\link.write.1.tlog
?????文件??????????68??2014-04-09?13:52??SIFT_RANSAC\SIFT_RANSAC\Debug\SIFT_RANSAC.lastbuildstate
?????文件????????1381??2014-04-09?13:52??SIFT_RANSAC\SIFT_RANSAC\Debug\SIFT_RANSAC.log
?????文件???????????0??2014-04-09?13:52??SIFT_RANSAC\SIFT_RANSAC\Debug\SIFT_RANSAC.unsuccessfulbuild
?????文件??????789504??2014-04-09?13:33??SIFT_RANSAC\SIFT_RANSAC\Debug\vc110.idb
?????文件?????1699840??2014-04-09?13:33??SIFT_RANSAC\SIFT_RANSAC\Debug\vc110.pdb
?????文件??????756038??2014-04-09?13:33??SIFT_RANSAC\SIFT_RANSAC\Debug\源.obj
?????目錄???????????0??2014-04-09?12:47??SIFT_RANSAC\SIFT_RANSAC\Release\
?????文件?????????652??2014-04-09?11:48??SIFT_RANSAC\SIFT_RANSAC\Release\cl.command.1.tlog
?????文件???????24014??2014-04-09?11:48??SIFT_RANSAC\SIFT_RANSAC\Release\CL.read.1.tlog
?????文件?????????368??2014-04-09?11:48??SIFT_RANSAC\SIFT_RANSAC\Release\CL.write.1.tlog
............此處省略210個文件信息

評論

共有 條評論