此为一项目工程文件,实现运用opencv进行二维多张全景图拼接,其中包括运用opencv自带Stitcher类的例子代码实现的.cpp文件,还包括两个运用sift 特征匹配拼接的.cpp文件,其中一个是设置匹配重叠权重,还包括测试几张图片,配置环境opencv2.4.10+VS2010或VS2013。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 113664 2018-01-15 11:28 imageStitchingDebugimageStitching.exe
文件 759616 2018-01-15 11:28 imageStitchingDebugimageStitching.ilk
文件 2248704 2018-01-15 11:28 imageStitchingDebugimageStitching.pdb
文件 507274 2012-05-21 16:54 imageStitchingDebugimg1.jpg
文件 500875 2012-05-21 16:54 imageStitchingDebugimg2.jpg
文件 497205 2012-05-21 16:54 imageStitchingDebugimg3.jpg
文件 2467340 2018-01-15 11:36 imageStitchingDebug
esult.jpg
文件 317368 2012-04-25 04:25 imageStitchingDebug bb_debug.dll
文件 4508 2016-10-23 20:58 imageStitchingimageStitchingDebugBuildLog.htm
文件 1074 2018-01-15 11:12 imageStitchingimageStitchingDebugimageStitching.Build.CppClean.log
文件 45 2016-11-08 10:58 imageStitchingimageStitchingDebugimageStitching.lastbuildstate
文件 7554 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.log
文件 1390 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tlogcl.command.1.tlog
文件 38284 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tlogCL.read.1.tlog
文件 766 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tlogCL.write.1.tlog
文件 161 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tlogimageStitching.lastbuildstate
文件 13280 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tloglink.command.1.tlog
文件 35242 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tloglink.read.1.tlog
文件 408 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tloglink.write.1.tlog
文件 0 2016-11-08 10:58 imageStitchingimageStitchingDebugimageStitching.unsuccessfulbuild
文件 67 2012-05-21 16:58 imageStitchingimageStitchingDebugmt.dep
文件 2457971 2012-05-21 17:10 imageStitchingimageStitchingDebug
esult.jpg
文件 445806 2018-01-15 11:28 imageStitchingimageStitchingDebugstitching.obj
文件 560128 2018-01-15 11:28 imageStitchingimageStitchingDebugvc120.idb
文件 1265664 2018-01-15 11:28 imageStitchingimageStitchingDebugvc120.pdb
文件 3757 2012-05-21 16:58 imageStitchingimageStitchingimageStitching.vcproj
文件 1421 2016-10-23 20:58 imageStitchingimageStitchingimageStitching.vcproj.GuoDafeng-PC.Guo Dafeng.user
文件 1441 2012-05-22 16:58 imageStitchingimageStitchingimageStitching.vcproj.HP98402794308.Administrator.user
文件 4962 2018-01-15 11:16 imageStitchingimageStitchingimageStitching.vcxproj
文件 934 2018-01-15 11:16 imageStitchingimageStitchingimageStitching.vcxproj.filters
............此处省略53个文件信息
#include “highgui/highgui.hpp“
#include “opencv2/nonfree/nonfree.hpp“
#include “opencv2/legacy/legacy.hpp“
using namespace cv;
//计算原始图像点位在经过矩阵变换后在目标图像上对应位置
Point2f getTransformPoint(const Point2f originalPoint const Mat &transformMaxtri);
int main(int argc char *argv[])
{
Mat image01 = imread(“img1.jpg“);
Mat image02 = imread(“img2.jpg“);
imshow(“拼接图像1“ image01);
imshow(“拼接图像2“ image02);
//灰度图转换
Mat image1 image2;
cvtColor(image01 image1 CV_RGB2GRAY);
cvtColor(image02 image2 CV_RGB2GRAY);
//提取特征点
SiftFeatureDetector siftDetector(800); // 海塞矩阵阈值
vector keyPoint1 keyPoint2;
siftDetector.detect(image1 keyPoint1);
siftDetector.detect(image2 keyPoint2);
//特征点描述,为下边的特征点匹配做准备
SiftDescriptorExtractor siftDescriptor;
Mat imageDesc1 imageDesc2;
siftDescriptor.compute(image1 keyPoint1 imageDesc1);
siftDescriptor.compute(image2 keyPoint2 imageDesc2);
//获得匹配特征点,并提取最优配对
FlannbasedMatcher matcher;
vector matchePoints;
matcher.match(imageDesc1 imageDesc2 matchePoints Mat());
sort(matchePoints.begin() matchePoints.end()); //特征点排序
//获取排在前N个的最优匹配特征点
vector imagePoints1 imagePoints2;
for (int i = 0; i < 10; i++)
{
imagePoints1.push_back(keyPoint1[matchePoints[i].queryIdx].pt);
imagePoints2.push_back(keyPoint2[matchePoints[i].trainIdx].pt);
}
//获取图像1到图像2的投影映射矩阵,尺寸为3*3
Mat homo = findHomography(imagePoints1 imagePoints2 CV_RANSAC);
Mat adjustMat = (Mat_(3 3) << 1.0 0 image01.cols 0 1.0 0 0 0 1.0);
Mat adjustHomo = adjustMat*homo;
//获取最强配对点在原始图像和矩阵变换后图像上的对应位置,用于图像拼接点的定位
Point2f originallinkPoint targetlinkPoint basedImagePoint;
originallinkPoint = keyPoint1[matchePoints[0].queryIdx].pt;
targetlinkPoint = getTransformPoint(originallinkPoint adjustHomo);
basedImagePoint = keyPoint2[matchePoints[0].trainIdx].pt;
//图像配准
Mat imageTransform1;
warpPerspective(image01 imageTransform1 adjustMat*homo Size(image02.cols + image01.cols + 10 image02.rows));
//在最强匹配点的位置处衔接,最强匹配点左侧是图1,右侧是图2,这样直接替换图像衔接不好,光线有突变
Mat ROIMat = image02(Rect(Point(basedImagePoint.x 0) Point(image02.cols image02.rows)));
ROIMat.copyTo(Mat(imageTransform1 Rect(targetlinkPoint.x 0 image02.cols - basedImagePoint.x + 1 image02.rows)));
namedWindow(“拼接结果“ 0);
imshow(“拼接结果“ imageTransform1);
imwrite(“result1.jpg“ imageTransform1);
waitKey();
return 0;
}
//计算原始图像点位在经过矩阵变换后在目标图像上对应位置
Point2f getTransformPoint(const Point2f originalPoint const Mat &transformMaxtri)
{
Mat originelP targetP;
originelP = (Mat_(3 1) << originalPoint.x originalPoint.y 1.0);
targetP = transformMaxtri*originelP;
float x = targetP.at(0 0) / targetP.at(2 0);
float y = targetP.at(1 0) / targetP.at(2 0);
return Point2f(x y);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 113664 2018-01-15 11:28 imageStitchingDebugimageStitching.exe
文件 759616 2018-01-15 11:28 imageStitchingDebugimageStitching.ilk
文件 2248704 2018-01-15 11:28 imageStitchingDebugimageStitching.pdb
文件 507274 2012-05-21 16:54 imageStitchingDebugimg1.jpg
文件 500875 2012-05-21 16:54 imageStitchingDebugimg2.jpg
文件 497205 2012-05-21 16:54 imageStitchingDebugimg3.jpg
文件 2467340 2018-01-15 11:36 imageStitchingDebug
esult.jpg
文件 317368 2012-04-25 04:25 imageStitchingDebug bb_debug.dll
文件 4508 2016-10-23 20:58 imageStitchingimageStitchingDebugBuildLog.htm
文件 1074 2018-01-15 11:12 imageStitchingimageStitchingDebugimageStitching.Build.CppClean.log
文件 45 2016-11-08 10:58 imageStitchingimageStitchingDebugimageStitching.lastbuildstate
文件 7554 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.log
文件 1390 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tlogcl.command.1.tlog
文件 38284 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tlogCL.read.1.tlog
文件 766 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tlogCL.write.1.tlog
文件 161 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tlogimageStitching.lastbuildstate
文件 13280 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tlogli
文件 35242 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tlogli
文件 408 2018-01-15 11:28 imageStitchingimageStitchingDebugimageStitching.tlogli
文件 0 2016-11-08 10:58 imageStitchingimageStitchingDebugimageStitching.unsuccessfulbuild
文件 67 2012-05-21 16:58 imageStitchingimageStitchingDebugmt.dep
文件 2457971 2012-05-21 17:10 imageStitchingimageStitchingDebug
esult.jpg
文件 445806 2018-01-15 11:28 imageStitchingimageStitchingDebugstitching.obj
文件 560128 2018-01-15 11:28 imageStitchingimageStitchingDebugvc120.idb
文件 1265664 2018-01-15 11:28 imageStitchingimageStitchingDebugvc120.pdb
文件 3757 2012-05-21 16:58 imageStitchingimageStitchingimageStitching.vcproj
文件 1421 2016-10-23 20:58 imageStitchingimageStitchingimageStitching.vcproj.GuoDafeng-PC.Guo Dafeng.user
文件 1441 2012-05-22 16:58 imageStitchingimageStitchingimageStitching.vcproj.HP98402794308.Administrator.user
文件 4962 2018-01-15 11:16 imageStitchingimageStitchingimageStitching.vcxproj
文件 934 2018-01-15 11:16 imageStitchingimageStitchingimageStitching.vcxproj.filters
............此处省略53个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)