資源簡(jiǎn)介
從大佬那里保存的,這個(gè)需要輸入立體校正后的圖片和相機(jī)焦距。如何輸入及數(shù)據(jù)來(lái)源在我上傳的另一份文件里。
代碼片段和文件信息
#include?“header.h“
#define?DETECTOR_TYPE “FAST“?//?FASTSIFTSURFSTARMSERGFTTHARRIS...參考創(chuàng)建函數(shù)
#define?DEscriptOR_TYPE “SIFT“?//?
#define?MATCHER_TYPE “Flannbased“?//?
#define?MAXM_FILTER_TH 20//GetPair中使用的閾值
#define?HOMO_FILTER_TH 100 //?GetPair中使用的閾值
#define?NEAR_FILTER_TH ?10//?不同點(diǎn)之間的距離應(yīng)大于NEAR_FILTER_TH
//選擇立體圖像中的對(duì)應(yīng)點(diǎn)進(jìn)行三維重建
void?GetPair(?Mat?&imgL?Mat?&imgR?vector?&ptsL?vector?&ptsR?)?
{
Mat?descriptorsL?descriptorsR;
double?tt?=?(double)getTickCount();
Ptr?detector?=?FeatureDetector::create(?DETECTOR_TYPE?);?
vector?keypointsL?keypointsR;?
detector->detect(?imgL?keypointsL?);
detector->detect(?imgR?keypointsR?);
PtrriptorExtractor>?de?=?DescriptorExtractor::create(DEscriptOR_TYPE);
//SurfDescriptorExtractor?de(42true);
de->compute(?imgL?keypointsL?descriptorsL?);
de->compute(?imgR?keypointsR?descriptorsR?);
tt?=?((double)getTickCount()?-?tt)/getTickFrequency();?//?620*555?pic?about?2s?for?SURF?120s?for?SIFT
PtrriptorMatcher>?matcher?=?DescriptorMatcher::create(?MATCHER_TYPE?);
vector>?matches;
matcher->knnMatch(?descriptorsL?descriptorsR?matches?2?);?//?L:query?R:train
vector?passedMatches;?//?save?for?drawing
DMatch?m1?m2;
vector?ptsRtemp?ptsLtemp;
for(?size_t?i?=?0;?i? {
m1?=?matches[i][0];
m2?=?matches[i][1];
if?(m1.distance? {
ptsRtemp.push_back(keypointsR[m1.trainIdx].pt);
ptsLtemp.push_back(keypointsL[i].pt);
passedMatches.push_back(m1);
}
}
Mat?HLR;
HLR?=?findHomography(?Mat(ptsLtemp)?Mat(ptsRtemp)?CV_RANSAC?3?);
cout<<“Homography:“< Mat?ptsLt;?
perspectiveTransform(Mat(ptsLtemp)?ptsLt?HLR);
vector?matchesMask(?passedMatches.size()?0?);
int?cnt?=?0;
for(?size_t?i1?=?0;?i1? {
Point2f?prjPtR?=?ptsLt.at((int)i10);?//?prjx?=?ptsLt.at((int)i10)?prjy?=?ptsLt.at((int)i11);
?//?inlier
if(?abs(ptsRtemp[i1].x?-?prjPtR.x)? abs(ptsRtemp[i1].y?-?prjPtR.y)?2)?//?restriction?on?y?is?more?strict
{
vector::iterator?iter?=?ptsL.begin();
for?(;iter!=ptsL.end();iter++)
{
Point2f?diff?=?*iter?-?ptsLtemp[i1];
float?dist?=?abs(diff.x)+abs(diff.y);
if?(dist? }
if?(iter?!=?ptsL.end())?continue;
ptsL.push_back(ptsLtemp[i1]);
ptsR.push_back(ptsRtemp[i1]);
cnt++;
if?(cnt%1?==?0)?matchesMask[i1]?=?1;?//?don‘t?want?to?draw?to?many?matches
}
}
Mat?outImg;
drawMatches(imgL?keypointsL?imgR?keypointsR?passedMatches?outImg?
Scalar::all(-1)?Scalar::all(-1)?matchesMask?DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS);
char?title[50];
sprintf_s(title?50?“%.3f?s?%d?matches?%d?passed“?tt?matches.size()?cnt);
imshow(title?outImg);
}
//?用于用opencv函數(shù)進(jìn)行三角剖分
bool?isGood
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
????..A..H.?????48128??2016-08-08?00:10??Reconstuction3d\.vs\Reconstuction3d\v14\.suo
?????文件????3686454??2018-10-26?14:56??Reconstuction3d\1.bmp
?????文件????3686454??2018-10-26?14:56??Reconstuction3d\2.bmp
?????文件?????294912??2019-03-18?20:44??Reconstuction3d\Debug\Reconstuction3d.exe
?????文件????1943624??2019-03-18?20:44??Reconstuction3d\Debug\Reconstuction3d.ilk
?????文件????4828160??2019-03-18?20:44??Reconstuction3d\Debug\Reconstuction3d.pdb
?????文件??????????0??2019-03-25?09:57??Reconstuction3d\dxva2.pdb\EFD40ACCC3FD48B69262D97BBD1DD2972\dxva2.pdb
?????文件?????128635??2016-07-21?22:03??Reconstuction3d\GLUT工具包.rar
?????文件????3686454??2018-10-26?14:56??Reconstuction3d\Reconstuction3d\1.bmp
?????文件??????12841??2018-09-11?16:56??Reconstuction3d\Reconstuction3d\1.jpg
?????文件??????38482??2019-03-28?09:20??Reconstuction3d\Reconstuction3d\11.jpg
?????文件????3686454??2018-10-26?14:56??Reconstuction3d\Reconstuction3d\2.bmp
?????文件??????39832??2019-03-28?09:20??Reconstuction3d\Reconstuction3d\22.jpg
?????文件??????81825??2011-05-25?12:22??Reconstuction3d\Reconstuction3d\3.jpg
?????文件??????82997??2011-05-25?12:24??Reconstuction3d\Reconstuction3d\4.jpg
?????文件???????8459??2019-03-19?16:02??Reconstuction3d\Reconstuction3d\cvFuncs.cpp
?????文件???????7044??2019-03-19?16:15??Reconstuction3d\Reconstuction3d\cvFuncs2.cpp
?????文件???????1516??2011-06-01?21:09??Reconstuction3d\Reconstuction3d\cvFuncs3.cpp
?????文件?????895212??2019-03-18?20:24??Reconstuction3d\Reconstuction3d\Debug\cvFuncs.obj
?????文件?????574383??2019-03-18?20:24??Reconstuction3d\Reconstuction3d\Debug\cvFuncs2.obj
?????文件?????517823??2019-03-18?20:24??Reconstuction3d\Reconstuction3d\Debug\glFuncs.obj
?????文件???????1754??2019-03-18?20:24??Reconstuction3d\Reconstuction3d\Debug\Reconstuction3d.Build.CppClean.log
?????文件???????3308??2019-03-18?20:44??Reconstuction3d\Reconstuction3d\Debug\Reconstuction3d.log
?????文件?????784196??2019-03-18?20:44??Reconstuction3d\Reconstuction3d\Debug\Reconstuction3d.obj
?????文件???????3574??2019-03-18?20:44??Reconstuction3d\Reconstuction3d\Debug\Reconstuction3d.tlog\cl.command.1.tlog
?????文件?????123772??2019-03-18?20:44??Reconstuction3d\Reconstuction3d\Debug\Reconstuction3d.tlog\CL.read.1.tlog
?????文件???????4190??2019-03-18?20:44??Reconstuction3d\Reconstuction3d\Debug\Reconstuction3d.tlog\CL.write.1.tlog
?????文件???????5490??2019-03-18?20:44??Reconstuction3d\Reconstuction3d\Debug\Reconstuction3d.tlog\li
?????文件???????9660??2019-03-18?20:44??Reconstuction3d\Reconstuction3d\Debug\Reconstuction3d.tlog\li
?????文件???????1388??2019-03-18?20:44??Reconstuction3d\Reconstuction3d\Debug\Reconstuction3d.tlog\li
............此處省略63個(gè)文件信息
評(píng)論
共有 條評(píng)論