Opencv中提供Stitcher类,实现了多图像自动拼接,Opencv是开源的,程序实现的源代码都在Opencv安装文件中,以及Opencv提供的函数查询手册和Opencv教程都可以在官网上下载的到,通过这些文档和代码,我们可以很容易就对图像拼接有一个深刻的了解。所以下面,我就教大家怎么把stitcher类的实现源码以及sample的程序变成自己的,随便修改其中的功能函数,并且正常运行。
Opencv2.4.9版本安装之后只有两个文件夹,build和sources,build是Opencv的库,lib以及dll文件,sources就是Opencv的所有源码以及sample了,而stitcher的源码就在
H:\opencv\sources\modules\stitching中,文件夹包含的内容如下:
当然Opencv也提供了stitcher的应用实例,在sample\cpp文件夹中
stitching.cpp是比较简单的封装调用,只是传输图片,在main函数中修改stitcher类的参数。stitching_detailed.cpp比较详细,介绍了所有的参数的修改,surf或者orb特征点检测,光束法平差,水平,垂直或者没有波形矫正,多种光照补偿的选择,缝隙检测,多频段拼接,输出图片的位置和名称等等。
新建工程,将H:\opencv\sources\modules\stitching的文件夹中的include和src复制到工程文件夹中,将sample\cpp中的stitching_detailed.cpp也复制到工程文件夹中。
在Header Files中添加detail文件夹,将include\opencv2\stitching\detail中的.h文件加载进去。在Resource Files中将stitching_detailed.cpp以及src中的cpp也加载进去。这样调试程序会出现了2个错误,下面我们一一解决。
1.precomp.hpp中找不到cvconfig.h
修改办法:将程序的
#include "cvconfig.h"改为
#ifdef HAVE_CVCONFIG_H #include "cvconfig.h" #endif
修改办法,将程序的
#include "../../imgproc/src/gcgraph.hpp"改为
#include "gcgraph.hpp"并从
H:\opencv\sources\modules\imgproc\src中,将gcgraph.hpp复制到工程文件夹中,就行了。
3.另外还有一个不是错误的问题,主要是为了方便程序运行时显示程序的进度
在detail\util.hpp中,第47行,将enable_log置1.
#define ENABLE_LOG 1这样运行程序的时候就会显示出:
OpenCV2.4.5 + QT4.8.4 + VS2010 环境搭建
Opencv2.4.9官方文档