資源簡介
這個是我做項目時用到的,平時很多網上資源沒有用,都是橫向拼接,這個是我改的,里面有很多算法,用了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:?“?< cout?<“V1:?“?< 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 - 下一篇:計算機網絡原理 自考 教材
評論
共有 條評論