资源简介
航拍图片全景拼接代码

代码片段和文件信息
#include “util.h“
#include “match.h“
#include “warp.h“
#include “mst.h“
#include “exposure_compensator.h“
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
using namespace cv::detail;
bool matchThreshold = 0.0f;
Rect compose_roi(vector imgs vector corners)
{
int n = imgs.size();
int x1 x2 y1 y2;
x1 = corners[0].x;
x2 = corners[0].x + imgs[0].cols;
y1 = corners[0].y;
y2 = corners[0].y + imgs[0].rows;
for(int i = 1; i < n; i++)
{
x1 = (std::min)(corners[i].x x1);
y1 = (std::min)(corners[i].y y1);
x2 = (std::max)(corners[i].x + imgs[i].cols x2);
y2 = (std::max)(corners[i].y + imgs[i].rows y2);
}
return Rect(x1 y1 x2-x1 y2-y1);
}
Point compose_images_rough(vector imgs vector masks vector corners Mat &dst Mat &dst_mask)
{
int n = imgs.size();
Rect roi = compose_roi(imgs corners);
Point corner = roi.tl();
dst.create(roi.size() CV_8UC3);
dst_mask.create(roi.size() CV_8U);
for(int i = 0; i < n; i++)
{
int x = corners[i].x - corner.x;
int y = corners[i].y - corner.y;
imgs[i].copyTo(dst(Rect(x y imgs[i].cols imgs[i].rows)) masks[i]);
masks[i].copyTo(dst_mask(Rect(x y imgs[i].cols imgs[i].rows)) masks[i]);
}
return corner;
}
Rect get_mask_roi(Mat mask)
{
int x1 x2 y1 y2;
x2 = y2 = 0;
x1 = mask.cols - 1;
y1 = mask.rows - 1;
for(int y = 0; y < mask.rows; y++)
{
uchar *mask_ptr = mask.ptr(y);
for(int x = 0; x < mask.cols; x++)
{
if(mask_ptr[x] != 0)
{
if(x < x1) x1 = x;
if(y < y1) y1 = y;
if(x > x2) x2 = x;
if(y > y2) y2 = y;
}
}
}
return Rect(x1 y1 x2-x1+1 y2-y1+1);
}
/*
所有的特征提取、匹配都是在work_scale
*/
double work_scale = 0.4;
static int stitch_idx = 1;
string src_dir;
/*
将srcs[1]~srcs[n]增量式拼接到srcs[0]
srcs: srcs[0]是基准图像,srcs[i]是增量图像
mask0: srcs[0]的mask
feat0: srcs[0]的特征
*/
int stitch_images(vector srcs Mat mask0 ImageFeatures feat0
Mat &dst Mat &dst_mask ImageFeatures &dst_feat vector &success_mask)
{
int num_img = srcs.size();
/*********** work scale ***********/
cout << “\textracting features ... “ << endl;
vector srcs_ws(num_img);
Mat mask0_ws;
resize(mask0 mask0_ws Size() work_scale work_scale);
vector feats(num_img);
Ptr finder = new SurfFeaturesFinder();
for(int i = 0; i < num_img; i++)
resize(srcs[i] srcs_ws[i] Size() work_scale work_scale);
// 是否开启增量式特征提取
bool is_acc_feat = false;
if(is_acc_feat)
{
// 如果feat0里面没有特征,就重新提取,否则直接使用
if(feat0.keypoints.size() == 0)
(*finder)(srcs_ws[0] feats[0]);
else
feats[0] = feat0;
for(int i = 1; i < num_img; i++)
(*finder)(srcs_ws[i] feats[i]);
}
else
{
#pragma omp parallel for
for(int i = 0; i < num_img; i++)
(*finder)(srcs_ws[i] feats[i]);
dst_feat = feats[0];
}
finder->collectGarbage();
// feature matching
cout << “\tmatching the
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-12-28 02:41 AerialImageStitch-master\
文件 22320 2016-12-28 02:41 AerialImageStitch-master\aerial_stitch.cpp
文件 6730 2016-12-28 02:41 AerialImageStitch-master\exposure_compensator.cpp
文件 1196 2016-12-28 02:41 AerialImageStitch-master\exposure_compensator.h
文件 3963 2016-12-28 02:41 AerialImageStitch-master\match.cpp
文件 381 2016-12-28 02:41 AerialImageStitch-master\match.h
文件 2308 2016-12-28 02:41 AerialImageStitch-master\mst.cpp
文件 651 2016-12-28 02:41 AerialImageStitch-master\mst.h
文件 16975 2016-12-28 02:41 AerialImageStitch-master\streetslide.cpp
文件 0 2016-12-28 02:41 AerialImageStitch-master\streetslide.h
文件 2544 2016-12-28 02:41 AerialImageStitch-master\util.cpp
文件 1247 2016-12-28 02:41 AerialImageStitch-master\util.h
文件 7992 2016-12-28 02:41 AerialImageStitch-master\warp.cpp
文件 604 2016-12-28 02:41 AerialImageStitch-master\warp.h
- 上一篇:FM350-1详细资料
- 下一篇:delphi版封包截取发送源码
相关资源
- BoW|Pyramid BoW+SVM进行图像分类
- opencv2.4.9源码分析——SIFT
- siftDemoV4.zip
- 基于柱面的360度全景图像拼接融合
- 利用OpenCV中的Stitcher类实现全景图像拼
- 角点检测与匹配
- opencv实现的sift算法源码,包含了图像
- SIFT特征提取+匹配
- 基于SIFT算法的图像拼接.rar
- 基于SIFT特征描述子的立体匹配算法
- 论文研究-改进的基于SIFT和RANSAC的图像
- opencv实现PCASift算法
- 基于小波的图像拼接
- SIFT算法详解及应用(讲的非常好很详
- opencv实现只有xy方向平移的图像拼接算
- Hausdorff距离匹配代码
- SIFT+RANSAC
- SIFT算法源代码
- OpenCV 现实高斯金字塔的源码,非常经
- opencv 将两幅等宽图像拼接在一起
- 高清超详细SIFT源代码分析
- sift源码实现附有详细注释及其核心论
- SIFT SURF算法的比较
- imageStitching实现图像拼接
- sift算法sift-latest_win.zip
- 利用halcon进行图像拼接的基本教程
- 基于局部视觉特征聚合的图像检索
- 基于halcon的图像拼接算法
- 纯C实现的图像拼接
- SURF算法的图像拼接和快速拼接算法
评论
共有 条评论