资源简介
这个是我做项目时用到的,平时很多网上资源没有用,都是横向拼接,这个是我改的,里面有很多算法,用了sift surf orb等,自己根据情况来选,当时搞这个,花了不少时间,含蒙层mask选择区域来找兴趣点
代码片段和文件信息
#include “stdafx.h“
#include
#include
#include
#include
#include“opencv2\opencv.hpp“
#include“opencv2\core\core.hpp“
#include“opencv2\xfeatures2d.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\.git\config
文件 73 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\desc
文件 23 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\HEAD
文件 177 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\hooks\README.sample
文件 976 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\index
文件 113 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\info\exclude
文件 350 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\logs\HEAD
文件 350 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\logs\refs\heads\master
文件 150 2018-08-25 08:56 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ms-persist.xm
文件 164 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 198 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 89 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 1863 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 751 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 205 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 449 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 205 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 392 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 1472 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 203 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 256 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 571 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 169 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 678 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\ob
文件 41 2018-08-24 16:26 ConsoleAppOpencv(3.4.0SURF纵向) - mask\.git\refs\heads\master
文件 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\.vs\ConsoleAppOpencv\v14\.suo
文件 10878 2018-10-30 15:32 ConsoleAppOpencv(3.4.0SURF纵向) - mask\ConsoleAppOpencv\ConsoleAppOpencv.cpp
文件 9009 2018-10-15 09:50 ConsoleAppOpencv(3.4.0SURF纵向) - mask\ConsoleAppOpencv\ConsoleAppOpencv.vcxproj
............此处省略71个文件信息
- 上一篇:ios music pla
yer lite - 下一篇:计算机网络原理 自考 教材
相关资源
- 图像拼接的经典论文
- 一篇关于图像拼接的比较好的硕士论
- Natural image stitching with the global simila
- 基于SURF算法的图像拼接
- 全景图像拼接图像拼接作业
- 基于相位相关算法的全景图像拼接
- opencv 360度n张图像拼接,任意角度两
- 基于SIFT特征的全景图像拼接(Qt)
- 18年最新立体图像拼接
- 眼底图像拼接
- OPENCV实现ORB/SURF/SIFT + RANSAC 图像自动拼
- OpenCvSharp 读摄像头及图像拼接功能
- 车载全景环视系统相关文档
- ENVI遥感图像进行图像拼接的多光谱遥
- OpenCV图像拼接原理解析和分模块实现
- 基于机器视觉的全景图像拼接
- 图像拼接技术的由来、现状以及拼接
- 基于halcon实现图像拼接技术
- 全景图像拼接技术研究现状综述
- 基于fast的图像拼接
- GreenWarps
- 基于多单应性矩阵的图像拼接
- 航拍图片全景拼接代码
- delphi图像拼接
- 中国地图及各省轮廓(可分).pdf
- 图像拼接 综述与算法综述
- 基于SIFT的图像拼接算法
- IDL 开发图像拼接程序
- 全景图像拼接基于SIFT特征-Qt工程
- 基于opencv的图像拼接生成全景图C代码
评论
共有 条评论