Opencv3.4SUFR纵向图像平滑拼接


这个是我做项目时用到的,平时很多网上资源没有用,都是横向拼接,这个是我改的,里面有很多算法,用了sift surf orb等,自己根据情况来选,当时搞这个,花了不少时间,含蒙层mask选择区域来找兴趣点
资源截图
代码片段和文件信息
#include “stdafx.h“
#include 
#include   
#include  
#include
#include“opencv2opencv.hpp“
#include“opencv2corecore.hpp“
#include“opencv2xfeatures2d.hpp“
#include “opencv2/xfeatures2d/nonfree.hpp“    
#include “opencv2/highgui/highgui.hpp“

#define CV_RANSAC 8

using namespace cv;
using namespace std;
#define pi 3.1415926

void OptimizeSeam(Mat& img1 Mat& trans Mat& dst);

typedef struct
{
Point2f left_top;
Point2f left_bottom;
Point2f right_top;
Point2f right_bottom;
}four_corners_t;

four_corners_t corners;

void CalcCorners(const Mat& H const Mat& src)
{
double v2[] = { 0 0 1 };//左上角
double v1[3];//变换后的坐标值
Mat V2 = Mat(3 1 CV_64FC1 v2);  //列向量
Mat V1 = Mat(3 1 CV_64FC1 v1);  //列向量

V1 = H * V2;
//左上角(001)
cout << “V2: “ << V2 << endl;
cout << “V1: “ << V1 << endl;
corners.left_top.x = v1[0] / v1[2];
corners.left_top.y = v1[1] / v1[2];

//左下角(0src.rows1)
v2[0] = 0;
v2[1] = src.rows;
v2[2] = 1;
V2 = Mat(3 1 CV_64FC1 v2);  //列向量
V1 = Mat(3 1 CV_64FC1 v1);  //列向量
V1 = H * V2;
corners.left_bottom.x = v1[0] / v1[2];
corners.left_bottom.y = v1[1] / v1[2];

//右上角(src.cols01)
v2[0] = src.cols;
v2[1] = 0;
v2[2] = 1;
V2 = Mat(3 1 CV_64FC1 v2);  //列向量
V1 = Mat(3 1 CV_64FC1 v1);  //列向量
V1 = H * V2;
corners.right_top.x = v1[0] / v1[2];
corners.right_top.y = v1[1] / v1[2];

//右下角(src.colssrc.rows1)
v2[0] = src.cols;
v2[1] = src.rows;
v2[2] = 1;
V2 = Mat(3 1 CV_64FC1 v2);  //列向量
V1 = Mat(3 1 CV_64FC1 v1);  //列向量
V1 = H * V2;
corners.right_bottom.x = v1[0] / v1[2];
corners.right_bottom.y = v1[1] / v1[2];
}

//计算夹角
double dotProduct(const vector& v1 const vector& v2)
{
assert(v1.size() == v2.size());
double ret = 0.0;
for (vector::size_type i = 0; i != v1.size(); ++i)
{
ret += v1[i] * v2[i];
}
return ret;
}
//向量模
double module(const vector& v)
{
double ret = 0.0;
for (vector::size_type i = 0; i != v.size(); ++i)
{
ret += v[i] * v[i];
}
return sqrt(ret);
}

double get_point_angle(Point2f pointO Point2f pointA)
{
double angle = 0;
Point2f point;
double temp;
point = Point2f((pointA.x - pointO.x) (pointA.y - pointO.y));
if ((0 == point.x) && (0 == point.y))
{
return 0;
}
if (0 == point.x)
{
angle = 90;
return angle;
}
if (0 == point.y)
{
angle = 0;
return angle;
}
temp = fabsf(float(point.y) / float(point.x));
temp = atan(temp);
temp = temp * 180 / CV_PI;
if ((0 {
angle = 360 - temp;
return angle;
}
if ((0>point.x) && (0 {
angle = 360 - (180 - temp);
return angle;
}
if ((0point.y))
{
angle = temp;
return angle;
}
if ((0>point.x) && (0>point.y))
{
angle = 180 - temp;
return angle;
}
printf(“sceneDrawing :: getAngle error!“);
return -1;
}

//计算余弦值
double 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        752  2018-08-25 08:57  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitconfig

     文件         73  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitdescription

     文件         23  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitHEAD

     文件        177  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.githooksREADME.sample

     文件        976  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitindex

     文件        113  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitinfoexclude

     文件        350  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitlogsHEAD

     文件        350  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitlogs
efsheadsmaster

     文件        150  2018-08-25 08:56  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitms-persist.xml

     文件        164  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjects0f1b970f0f7b40013f343cc3d042f29e531b825

     文件        198  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjects14ab97db7bad25e5ab0b49fec925e0ecde34191

     文件         89  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjectsd76fe4328089e5b63a9c4190badacfc35ef2624

     文件       1863  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjects1c9a181a44b4f9a105f0dc71a40ad0284ab6a7c4

     文件        751  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjects1ff0c423042b46cb1d617b81efb715defbe8054d

     文件        205  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjects416cebf89fd0df8216693b65bba536a1436754e7

     文件        449  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjects4386ddf9881eb3b90fe5bce2d998f9f88e3259d8

     文件        205  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjects6f836b3f2ad61feb8ca4504056dd6f77dd4c082

     文件        392  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjects7d10113c37d240cf18aa54ab48b01e0edc46e050

     文件       1472  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjectsa42ab0289d2dd626bff505d6ede7b244156c4a4

     文件        203  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjectsaa4bbc621f3abfbc1726da79a84e54dbd5309f8

     文件        256  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjectsd0a097c53e0afc44773598da415389f6d2e678f9

     文件        571  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjectsd4722586bbc6a8c89758bccbcacb5844dadb98c

     文件        169  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjectse63873965f9636901c08f229ceeefed8a8f27107

     文件        678  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitobjectsf340a5272d9cb4b971d960d4a09a90b753e5df3a

     文件         41  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.git
efsheadsmaster

     文件       2581  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitattributes

     文件       3997  2018-08-24 16:26  ConsoleAppOpencv(3.4.0SURF纵向) - mask.gitignore

    ..A..H.     67584  2018-10-30 15:33  ConsoleAppOpencv(3.4.0SURF纵向) - mask.vsConsoleAppOpencvv14.suo

     文件      10878  2018-10-30 15:32  ConsoleAppOpencv(3.4.0SURF纵向) - maskConsoleAppOpencvConsoleAppOpencv.cpp

     文件       9009  2018-10-15 09:50  ConsoleAppOpencv(3.4.0SURF纵向) - maskConsoleAppOpencvConsoleAppOpencv.vcxproj

............此处省略71个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)