资源简介
从大佬那里保存的,这个需要输入立体校正后的图片和相机焦距。如何输入及数据来源在我上传的另一份文件里。
代码片段和文件信息
#include “header.h“
#define DETECTOR_TYPE “FAST“ // FASTSIFTSURFSTARMSERGFTTHARRIS...参考创建函数
#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// 不同点之间的距离应大于NEAR_FILTER_TH
//选择立体图像中的对应点进行三维重建
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 < matches.size(); i++ )
{
m1 = matches[i][0];
m2 = matches[i][1];
if (m1.distance < MAXM_FILTER_TH * m2.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 < ptsLtemp.size(); 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) < HOMO_FILTER_TH &&
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 < NEAR_FILTER_TH) break;
}
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函数进行三角剖分
bool isGood
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..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个文件信息
相关资源
- 泛型编程与STL中文版 -----侯捷
- Make: Getting Started with Arduino 3rd
- cmake-3.16.0-rc1-win64-x64.msi
- 编译好的cryptlib.lib,包含32位,64位,
- 奔腾绿色浏览器
- OpenCV与OpenGL实现增强现实
- 算法竞赛入门经典-训练指南
- ACM超级模板
- 算法竞赛宝典第二部资源包
- 八思量打标卡sdk,积分改为0试试看
- 基于机器视觉的自动分拣系统
- STL源码剖析中文完整版pdf
- List Control动态修改编辑Demo
- 分布式实时处理系统 原理、架构与实
- 最新手机号段归属地数据库(2019年
- 点集压缩算法douglas-peucker等
- 空间点三位重建前方交会
- COM原理与应用.pdf
- Qt 5开发及第4版陆文周.zip
- QT Css设计器
- 类似qq的交流工具
- OpenGL编程指南 第九版英文版 OpenGL P
- IP包捕获与解析
- cmake-3.16.0-rc1-win64-x64.zip
- 机器鱼的结构设计与组装
- 匠心精作C 从0到1入门编程-学习编程
-
基于qt的qmediapla
yer类实现的一个播放 - MongoDB电子考试系统
- opengl编程指南第七版
- 去除反光干扰
评论
共有 条评论