使用Stitcher类,通过createDefault()方法创建拼接对象,通过stitch()方法执行默认的自动拼接。自动拼接和07年Brown和Lowe发表的论文描述的步骤基本一致,只不过使用的特征提取算法是ORB,而不是慢吞吞、有专利保护的SIFT和SURF。开源万岁!

代码内容:设置几张图片,扔到向量里面,然后计算全景图。

opencv-3.0.0源码中没有找到测试图片,很蛋碎。到github上找了下,发现都在[https://github.com/Itseez/opencv_extra](opencv_extra)这个项目下。。使用到了boat1.jpg~boat6.jpg

在fedora22+i53210+12G内存+全SSD条件下测试,还是有点慢的,大概5,6秒才出结果。当然,如果只有2张图片,秒出。

代码:

//图像拼接
//哦,这个程序是最简单的拼接,最傻瓜的那种,不必知道拼接的pipeline
//只需要调用createDefault()和stitch()方法就可以完成拼接 #include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/stitching/stitcher.hpp> using namespace std;
using namespace cv; string IMAGE_PATH_PREFIX = "/home/chris/Pictures/"; bool try_use_gpu = false;
vector<Mat> imgs;
string result_name = IMAGE_PATH_PREFIX + "result.jpg"; int main()
{
Mat img = imread(IMAGE_PATH_PREFIX + "boat1.jpg");
imgs.push_back(img);
img=imread(IMAGE_PATH_PREFIX+"boat2.jpg");
imgs.push_back(img);
img=imread(IMAGE_PATH_PREFIX+"boat3.jpg");
imgs.push_back(img);
img=imread(IMAGE_PATH_PREFIX+"boat3.jpg");
imgs.push_back(img);
img=imread(IMAGE_PATH_PREFIX+"boat4.jpg");
imgs.push_back(img);
img=imread(IMAGE_PATH_PREFIX+"boat5.jpg");
imgs.push_back(img);
img=imread(IMAGE_PATH_PREFIX+"boat6.jpg");
imgs.push_back(img); Mat pano;//拼接结果图片
//Stitcher stitcher = Stitcher::createDefault(try_use_gpu);
Stitcher stitcher = Stitcher::createDefault(true);
Stitcher::Status status = stitcher.stitch(imgs, pano); if (status != Stitcher::OK)
{
cout << "Can't stitch images, error code = " << int(status) << endl;
return -1;
} imwrite(result_name, pano);
} int main_test_feature_algo(){
#ifdef HAVE_OPENCV_XFEATURES2D
cout << "Surf" << endl;
#else
cout << "Orb" << endl;
#endif
}

  

当然你也可以看下opencv-3.0.0/samples/cpp/stitching.cpp的代码

效果图:

OpenCV中的全景拼接例程的更多相关文章

  1. 立体视觉-opencv中立体匹配相关代码

    三种匹配算法比较 BM算法: 该算法代码: view plaincopy to clipboardprint? CvStereoBMState *BMState = cvCreateStereoBMS ...

  2. OpenCV中Camshitf算法学习

    今天上午,结合OpenCV自带的camshitf例程,简单的对camshitf有了一个大致的认识和理解,现总结如下: 1:关于HSV H指hue(色相).S指saturation(饱和度).V指val ...

  3. OpenCV学习笔记(12)——OpenCV中的轮廓

    什么是轮廓 找轮廓.绘制轮廓等 1.什么是轮廓 轮廓可看做将连续的点(连着边界)连在一起的曲线,具有相同的颜色和灰度.轮廓在形态分析和物体的检测和识别中很有用. 为了更加准确,要使用二值化图像.在寻找 ...

  4. opencv中Mat与IplImage,CVMat类型之间转换

    opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...

  5. 解析opencv中Box Filter的实现并提出进一步加速的方案(源码共享)。

    说明:本文所有算法的涉及到的优化均指在PC上进行的,对于其他构架是否合适未知,请自行试验. Box Filter,最经典的一种领域操作,在无数的场合中都有着广泛的应用,作为一个很基础的函数,其性能的好 ...

  6. OpenCV中IplImage图像格式与BYTE图像数据的转换

    最近在将Karlsruhe Institute of Technology的Andreas Geiger发表在ACCV2010上的Efficent Large-Scale Stereo Matchin ...

  7. opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较

    opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较 参考: http://wenku.baidu.com/link?url=1aDYAJBCrrK-uk2w3sSNai7h52x_ ...

  8. 混合高斯模型:opencv中MOG2的代码结构梳理

    /* 头文件:OurGaussmix2.h */ #include "opencv2/core/core.hpp" #include <list> #include&q ...

  9. opencv中的.at方法

    opencv中的.at方法是用来获取图像像素值得函数: interpolation:差值 histogram:直方图

随机推荐

  1. Sprite Editor 图集切片精灵

    切图需求 假设有一张大的UI的图集,我们想把它里面的小图一张一张地切割出来,如果有plist文件,请查阅我的另一篇文章<还原TexturePacker plist 文件 切开各小图片> 今 ...

  2. CPU相关知识-寄存器与存储器的区别

    存储器一般在CPU外,一般指硬盘,U盘等可以在切断电源后保存资料的设备,容量一般比较大,缺点是读写速度都很慢,普通的机械硬盘读写速度一般是 50MB/S左右.内存和寄存器就是为了解决存储器读写速度慢而 ...

  3. java 20 -2 递归之找特定目录下的特定格式文件

    /* 需求:把C:\Users\Administrator\Desktop\记录目录下所有以.java结尾的文件的绝对路径输出到控制台 分析: A:封装该目录 B:获取该目录下的所有文件或文件夹的Fi ...

  4. android 知识点收集

    1.  计算时间流逝请使用SystemClock.elapsedRealtime... currentTimeMillis会受系统时钟影响  //未验证 2.  android app私有文件的目录 ...

  5. 三层ViewPager嵌套 的事件处理

    这么多ViewPager嵌套在一起肯定会遇到冲突 不信你试试(笑脸) 下面来说怎么解决.....太为难我这个菜b了 设置外部的父控件不要拦截我子控件的事件,通过重写ViewPager的 @Overri ...

  6. Java系列: 关于HttpSessionListener的sessionDestroyed什么时候触发

    根据书本写了下面这个监听器,然后开始调试,打开一个浏览器来访问该网页,可以正常触发sessionCreated,然后关闭浏览器,发现没有触发sessionDestroyed,然后我怀疑是不是这个监听器 ...

  7. 《信息安全系统设计基础》第一次实验报告--Linux 基础入门

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全设计基础 班级:1352  姓名:何伟钦  学号:20135223 成绩:            指导教师:娄嘉鹏 ...

  8. 点击事件touches与ios的手势UIGestureRecognizer

    .h文件 @property (weak,nonatomic) IBOutlet UILabel *messageLabel;@property (weak,nonatomic) IBOutlet U ...

  9. 分享我收集的引擎、图形学、WebGL方面的电子资料

    本文分享我这一年以来收集的我认为比较经典的电子资料,希望能对大家有所帮助! 本文会不断更新! 目录 WebGL Insights OpenGL Insights Game Programming Pa ...

  10. 关于android使用ksoap2报Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject

    Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serializa ...