资源简介
OpenCV3.1版本 Visual Studio 2015版本 把两幅残缺的眼底视网膜图像拼接成一副完整的(程序运行时间有点长,耐心等待)
代码片段和文件信息
#include
#include
#include
using namespace std;
using namespace cv;
using namespace cv::xfeatures2d;
int main()
{
Mat img1 img2;
img2 = imread(“001.png“);
img1 = imread(“002.png“);
int minHessian = 1000;
//Ptr detector = SIFT::create(minHessian);
Ptr detector = SIFT::create(200030.000000000410.01.5);
vector keypoint1;
vector keypoint2;
Mat descriptor1 descriptor2;
//detector->detect(img1 keypoint1);
detector->detectAndCompute(img1 Mat() keypoint1 descriptor1);
detector->detectAndCompute(img2 Mat() keypoint2 descriptor2);
//Mat copy_img1 = img1.clone();
//Mat copy_img2 = img2.clone();
Mat img_keyPoint1;
//Mat img_keyPoint2;
drawKeypoints(img1 keypoint1 img_keyPoint1 Scalar::all(-1) DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
resize(img_keyPoint1 img_keyPoint1 Size(1280 960));
imshow(“jieguo“ img_keyPoint1);
//特征匹配
double t = (double)getTickCount();
FlannbasedMatcher matcher;
vector matches;
matcher.match(descriptor1 descriptor2 matches);
double minDist = 1000;
double maxDist = 0;
for (int i = 0; i < descriptor1.rows; i++)
{
double dist = matches[i].distance;
if (dist < minDist)
minDist=dist;
if (dist > maxDist)
maxDist = dist;
}
printf(“minDist Distance: %f\n“ minDist);
printf(“maxDist Distance: %f\n“ maxDist);
vector goodMatches;
for (int i = 0; i < descriptor1.rows; i++)
{
double dist = matches[i].distance;
if (dist > (5* minDist) && dist <(maxDist/2))
goodMatches.push_back(matches[i]);
}
Mat matchesImg;
//drawMatches(img1 keypoint1 img2 keypoint2 goodMatches matchesImg Scalar(-1) Scalar(-1) vector() DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS);
drawMatches(img1 keypoint1 img2 keypoint2 goodMatches matchesImg Scalar::all(-1) Scalar::all(-1) vector() DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS);
t = (double)getTickCount() - t;
printf(“execution time = %gms\n“ t*1000.0 / getTickFrequency());
Mat copymatchesImg = matchesImg.clone();
resize(copymatchesImg copymatchesImg Size(1280 480));
imshow(“Flann Matching Result“ copymatchesImg);
std::vector obj;
std::vector scene;
for (int i = 0; i < (int)goodMatches.size(); i++)
{
obj.push_back(keypoint1[goodMatches[i].queryIdx].pt);
scene.push_back(keypoint2[goodMatches[i].trainIdx].pt);
}
//直接调用ransac计算单应矩阵
Mat H = findHomography(obj scene CV_RANSAC);
std::vector obj_corners(4);
std::vector scene_corners(4);
obj_corners[0] = Point(0 0);
obj_corners[1] = Point(img1.cols 0);
obj_corners[2] = Point(img1.cols img1.rows);
obj_corners[3] = Point(0 img1.rows);
perspectiveTransform(obj_corners scene_corners H);
//-- Draw lines between the corners (the mapped object in the scene - image_2 )
Point2f offset((
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 36352 2018-05-09 11:18 视网膜图片拼接\.vs\FLANN match\v14\.suo
文件 7895268 2014-07-22 13:41 视网膜图片拼接\FLANN match\001.png
文件 7565546 2014-07-22 13:41 视网膜图片拼接\FLANN match\002.png
文件 7380 2018-04-08 10:13 视网膜图片拼接\FLANN match\FLANN match.vcxproj
文件 945 2018-04-08 10:13 视网膜图片拼接\FLANN match\FLANN match.vcxproj.filters
文件 5347 2018-07-05 14:37 视网膜图片拼接\FLANN match\main.cpp
文件 1189 2018-07-05 14:40 视网膜图片拼接\FLANN match\x64\Debug\FLANN match.Build.CppClean.log
文件 1076 2018-07-05 14:40 视网膜图片拼接\FLANN match\x64\Debug\FLANN match.log
文件 770 2018-07-05 14:40 视网膜图片拼接\FLANN match\x64\Debug\FLANN match.tlog\CL.command.1.tlog
文件 37710 2018-07-05 14:40 视网膜图片拼接\FLANN match\x64\Debug\FLANN match.tlog\CL.read.1.tlog
文件 796 2018-07-05 14:40 视网膜图片拼接\FLANN match\x64\Debug\FLANN match.tlog\CL.write.1.tlog
文件 247 2018-07-05 14:40 视网膜图片拼接\FLANN match\x64\Debug\FLANN match.tlog\FLANN match.lastbuildstate
文件 3444 2018-07-05 14:40 视网膜图片拼接\FLANN match\x64\Debug\FLANN match.tlog\li
文件 9844 2018-07-05 14:40 视网膜图片拼接\FLANN match\x64\Debug\FLANN match.tlog\li
文件 782 2018-07-05 14:40 视网膜图片拼接\FLANN match\x64\Debug\FLANN match.tlog\li
文件 978077 2018-07-05 14:40 视网膜图片拼接\FLANN match\x64\Debug\main.obj
文件 1141760 2018-07-05 14:40 视网膜图片拼接\FLANN match\x64\Debug\vc140.idb
文件 2289664 2018-07-05 14:40 视网膜图片拼接\FLANN match\x64\Debug\vc140.pdb
文件 4209 2018-07-05 14:38 视网膜图片拼接\FLANN match\x64\Release\FLANN match.log
文件 790 2018-07-05 14:38 视网膜图片拼接\FLANN match\x64\Release\FLANN match.tlog\CL.command.1.tlog
文件 37710 2018-07-05 14:38 视网膜图片拼接\FLANN match\x64\Release\FLANN match.tlog\CL.read.1.tlog
文件 600 2018-07-05 14:38 视网膜图片拼接\FLANN match\x64\Release\FLANN match.tlog\CL.write.1.tlog
文件 249 2018-07-05 14:38 视网膜图片拼接\FLANN match\x64\Release\FLANN match.tlog\FLANN match.lastbuildstate
文件 2 2018-07-05 14:38 视网膜图片拼接\FLANN match\x64\Release\FLANN match.tlog\li
文件 2 2018-07-05 14:38 视网膜图片拼接\FLANN match\x64\Release\FLANN match.tlog\li
文件 2 2018-07-05 14:38 视网膜图片拼接\FLANN match\x64\Release\FLANN match.tlog\li
文件 0 2018-07-05 14:38 视网膜图片拼接\FLANN match\x64\Release\FLANN match.tlog\unsuccessfulbuild
文件 3757216 2018-07-05 14:38 视网膜图片拼接\FLANN match\x64\Release\main.obj
文件 1953792 2018-07-05 14:38 视网膜图片拼接\FLANN match\x64\Release\vc140.pdb
文件 1315 2018-04-08 09:24 视网膜图片拼接\FLANN match.sln
............此处省略21个文件信息
相关资源
- vim配置成强大的IDE
- OPENCV实现ORB/SURF/SIFT + RANSAC 图像自动拼
- ippicv_2017u3_lnx_intel64_general_20180518.tgz
- LearningOpenCV中文版-于仕琪书源码.zip
- 算法竞赛入门经典完整版(ACM竞赛入
- qtOpenCVTools v1.7.0.rar
- 用QT做一个简单的登录界面
- mingw64编译好的OpenCV3.4.10
- OpenCV 4.2.0 && Qt5.14.1 编译好的库
-
OpenCV的haarcascades 各种分类器xm
l文件 - 数据结构+数据结构习题解析第3版_邓
- K66_逐飞.zip
- OpenCV计算机视觉编程攻略 第三版
- Thinking_in_C _中文版.pdf
- opencv-4.1.0样例图片和视频.zip
- OpenCv3.3 32位版本
- OpenCV 的opencv_createsamples.exe和opencv_ha
- 泛型编程与STL中文版.pdf
- Kinect + openni+opencv 获取深度图
- opencv-3.4.1-windows版本
- Real-Time Rendering Fourth Edition
- 人工智能求解怪兽世界游戏
- 点云库PCL从入门到精通_随书代码.zi
- 华夏车牌识别二次开发软件.rar
- opencv 2计算机视觉编程手册_中文_+图片
-
mavli
nk协议收发源码 - opencv-3.4.7.zip
- 高质量程序设计指南第三版 修订版
- 深入理解OpenCV 实用计算机视觉项目解
- vgg_generated_120.i等.tar.gz
评论
共有 条评论