资源简介
两个文件夹,一个为sift+ransac图像匹配代码,同时还有匹配精度检测代码(以像素精度)。另一个文件夹为surf图像匹配代码。

代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
using namespace cv::xfeatures2d;
Point2f getTransformPoint(const Point2f originalPoint const Mat &transformMaxtri);
int main()
{
//Mat srcImage1 = imread(“D:\\opencv\\pictures\\SIFT_try\\1.png“);
Mat srcImage1 = imread(“D:\\研一文件夹\\上学期\\迷之课设\\课程设计\\demo-data\\im44.jpg“);
//Mat srcImage1 = imread(“D:\\研一文件夹\\上学期\\迷之课设\\课程设计\\demo-data\\building01.png“);
//Mat srcImage1 = imread(“D:\\opencv\\pictures\\视频采集\\35.jpg“);
//Mat srcImage1 = imread(“D:\\opencv\\pictures\\视频采集\\headPose_1.jpg“);
//Mat srcImage1 = imread(“D:\\opencv\\pictures\\eye_close.jpg“);
//Mat srcImage2 = imread(“D:\\opencv\\pictures\\视频采集\\headPose_2.jpg“);
//Mat srcImage2= imread(“D:\\opencv\\pictures\\视频采集\\79.jpg“);
//Mat srcImage2 = imread(“D:\\opencv\\pictures\\SIFT_try\\2.png“);
Mat srcImage2 = imread(“D:\\研一文件夹\\上学期\\迷之课设\\课程设计\\demo-data\\im54.jpg“);
//Mat srcImage2 = imread(“D:\\研一文件夹\\上学期\\迷之课设\\课程设计\\demo-data\\building02.png“);
if (!srcImage1.data || !srcImage2.data)
{
cout << “读取图片出错“ << endl;
return false;
}
imshow(“原始图1“ srcImage1);
imshow(“原始图2“ srcImage2);
////原?
//int minHessian = 100;
////改
int minHessian = 700;
Ptr detector = SurfFeatureDetector::create(minHessian);
vector key_points_1 key_points_2;
Mat dstImage1 dstImage2;
detector->detectAndCompute(srcImage1 Mat() key_points_1 dstImage1);
detector->detectAndCompute(srcImage2 Mat() key_points_2 dstImage2);//可以分成detect和compute
Mat img_keypoints_1 img_keypoints_2;
drawKeypoints(srcImage1 key_points_1 img_keypoints_1 Scalar::all(-1) DrawMatchesFlags::DEFAULT);
drawKeypoints(srcImage2 key_points_2 img_keypoints_2 Scalar::all(-1) DrawMatchesFlags::DEFAULT);
PtrriptorMatcher> matcher = DescriptorMatcher::create(“Flannbased“);
vectormach;
matcher->match(dstImage1 dstImage2 mach);
double Max_dist = 0;
double Min_dist = 100;
for (int i = 0; i < dstImage1.rows; i++)
{
double dist = mach[i].distance;
if (dist < Min_dist)Min_dist = dist;
if (dist > Max_dist)Max_dist = dist;
}
cout << “最短距离“ << Min_dist << endl;
cout << “最长距离“ << Max_dist << endl;
vectorgoodmaches;
for (int i = 0; i < dstImage1.rows; i++)
{
if (mach[i].distance < 2 * Min_dist)
goodmaches.push_back(mach[i]);
}
////改开始
cout << “matches size: “ << key_points_1.size()<< endl;
cout << “good matches size: “ << goodmaches.size()<< endl;
vector RAN_KP1 RAN_KP2;
for (size_t i = 0; i < goodmaches.size(); i++)
{
RAN_KP1.push_back(key_points_1[goodmaches[i].queryIdx]);
RAN_KP2.push_back(key_points_2[goodmaches[i].trainIdx]);
//RAN_KP1是要存储img01中能与img02匹配的点
//goodM
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5113 2019-01-09 15:34 sift+surf匹配代码\SIFT_RANSAC\main.cpp
文件 2603 2018-11-07 22:58 sift+surf匹配代码\SIFT_RANSAC\timer.cpp
文件 12404 2019-01-09 21:54 sift+surf匹配代码\SURF\main.cpp
目录 0 2019-03-24 13:07 sift+surf匹配代码\SIFT_RANSAC
目录 0 2019-03-24 13:07 sift+surf匹配代码\SURF
目录 0 2019-03-24 13:07 sift+surf匹配代码
----------- --------- ---------- ----- ----
20120 6
相关资源
- BoW|Pyramid BoW+SVM进行图像分类
- opencv2.4.9源码分析——SIFT
- siftDemoV4.zip
- 角点检测与匹配
- opencv实现的sift算法源码,包含了图像
- SIFT特征提取+匹配
- 基于SIFT算法的图像拼接.rar
- 基于SIFT特征描述子的立体匹配算法
- 论文研究-基于SURF和快速近似最近邻搜
- 论文研究-基于Harris角点和SURF特征的遥
- 论文研究-改进的基于SIFT和RANSAC的图像
- opencv实现PCASift算法
- SIFT算法详解及应用(讲的非常好很详
-
syba
se数据库的基本语法 - Hausdorff距离匹配代码
- 使用CUDA做图像模湖匹配
- 数字摄影测量程序
- SIFT+RANSAC
- SIFT算法源代码
- OpenCV 现实高斯金字塔的源码,非常经
- 高清超详细SIFT源代码分析
- sift源码实现附有详细注释及其核心论
- SIFT SURF算法的比较
- zw_C提取特征点并进行图像匹配.zip
- 异源图像匹配融合等所需的一些图像
- sift算法sift-latest_win.zip
- 基于局部视觉特征聚合的图像检索
- 图像匹配 目标轮廓匹配 基于OPENCV库
- 5篇图像匹配技术文章.rar
- 利用OpenCV(2.4.13)的SURF/SIFT + RANSAC
评论
共有 条评论