示例程序047--用opencv的stitcher类实现图像拼接

来源:互联网 发布:usb无线网卡linux驱动 编辑:程序博客网 时间:2024/06/07 09:54


原文:http://blog.sina.com.cn/s/blog_a98e39a201016sn7.html

opencv2.4.0以上的版本提供了stitcher类,可以很方便的实现几幅图像的拼接,关于这个类详细的介绍,可以参考文档: http://docs.opencv.org/2.4.2/modules/stitching/doc/high_level.html?highlight=stitcher#stitcher。
    该类主要用的成员函数有createDefault,用于创建缺省参数的stitcher;estimatedTransform,用于匹配图像、分析摄像头旋转角度;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;
}

最终结果:
示例程序047--用opencv的stitcher类实现图像拼接

示例程序047--用opencv的stitcher类实现图像拼接

示例程序047--用opencv的stitcher类实现图像拼接

示例程序047--用opencv的stitcher类实现图像拼接









0 0
原创粉丝点击