opencv--图像拼接

opencv2.4.0以上的版本提供了stitcher类,可以很方便的实现几幅图像的拼接,关于这个类详细的介绍,可以参考文档:http://docs.opencv.org/2.4.2/modules/stitching/doc/high_level.html?highlight=stitcher#stitcher

    该类主要用的成员函数有createDefault,用于创建缺省参数的stitcherestimatedTransform,用于匹配图像、分析摄像头旋转角度;composePanorama,生成最后的拼接图像。文档中提示如果对stitching的整过过程不熟悉的话,最好不要使用以上两个函数,直接使用stitch就行了。关于图像拼接的过程,涉及到特征点的提取、特征点匹配、图像融合等等比较复杂的过程,可以参考相关论文和期刊。

    在安装文件下,提供了图像拼接的例子:C:\opencv2.4.2\opencv\samples\cpp\stitching.cpp  

配置好后直接运行就可以了:

 

#include "stdafx.h"

#include <iostream>

#include <fstream>

#include "opencv2/highgui/highgui.hpp"

#include "opencv2/stitching/stitcher.hpp"

 

 

using namespace std;

using namespace cv;

 

bool try_use_gpu = false;

vector<Mat> imgs;

string result_name = "result.jpg";

 

//void printUsage();

//int parseCmdArgs(int argc, char** argv);

 

int main(int argc, char* argv[])

{

 

Mat img=imread("1.jpg");

imgs.push_back(img);

img=imread("2.jpg");

imgs.push_back(img);

img=imread("3.jpg");

imgs.push_back(img);

 

Mat pano;

Stitcher stitcher = Stitcher::createDefault(try_use_gpu);

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);

return 0;

}

 

最终结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值