opencv中stitching环境搭建(一)

            在学习机器视觉相关的内容,可以从某一方面入手,我选择的是从图像全景图拼接开始学习。说到图像拼接目前是比较成熟的,以03,07年的两篇论文为基础而衍生出来一系列应用。在阅读了一些论文之后,我们真正关心是代码是如何来实现的。如果这个时候能有相应的开源demo那就更完美了。

        当!当!当!今天我们的主角就要出场了,那就是opencv已经为我们做好了一个moudules,stitching。那么下边就让我们来配置一下环境,把这个demo跑起来,看看效果。再进一步的学习拼接的相关理论。

            该环境的搭建主要是参考了该博文:http://blog.csdn.net/skeeee/article/details/25196323


一、序言        

        Opencv中提供Stitcher类,实现了多图像自动拼接,Opencv是开源的,程序实现的源代码都在Opencv安装文件中,以及Opencv提供的函数查询手册和Opencv教程都可以在官网上下载的到,通过这些文档和代码,我们可以很容易就对图像拼接有一个深刻的了解。所以下面,我就教大家怎么把stitcher类的实现源码以及sample的程序变成自己的,随便修改其中的功能函数,并且正常运行。

二、构建自己的stitcher

        2.1 源代码

         Opencv2.4.9版本安装之后只有两个文件夹,build和sources,build是Opencv的库,lib以及dll文件,sources就是Opencv的所有源码以及sample了,而stitcher的源码就在

[cpp] view plain copy
  1. H:\opencv\sources\modules\stitching  (转发者注:路径根据自己opencv的位置来定)
        中,文件夹包含的内容如下:
opencv中stitching环境搭建(一)_第1张图片 

        2.2 主函数

        当然Opencv也提供了stitcher的应用实例,在sample\cpp文件夹中 (转发者注:这就是我们之前提到的demo)

opencv中stitching环境搭建(一)_第2张图片

        stitching.cpp是比较简单的封装调用,只是传输图片,在main函数中修改stitcher类的参数。stitching_detailed.cpp比较详细,介绍了所有的参数的修改,surf或者orb特征点检测,光束法平差,水平,垂直或者没有波形矫正,多种光照补偿的选择,缝隙检测,多频段拼接,输出图片的位置和名称等等。

        2.3 构建工程  (转发者注:这个搭建略显麻烦不推荐,请看2.4)

        新建工程,将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

        修改办法:将程序的

[cpp] view plain copy
  1. #include "cvconfig.h"  
        改为
[cpp] view plain copy
  1. #ifdef HAVE_CVCONFIG_H  
  2. #include "cvconfig.h"  
  3. #endif  

      2.precomp.hpp中找不到../../imgproc/src/gcgraph.hpp

       修改办法,将程序的

[cpp] view plain copy
  1. #include "../../imgproc/src/gcgraph.hpp"  
      改为
[cpp] view plain copy
  1. #include "gcgraph.hpp"  
     并从
[cpp] view plain copy
  1. H:\opencv\sources\modules\imgproc\src  
    中,将gcgraph.hpp复制到工程文件夹中,就行了。

    

     3.另外还有一个不是错误的问题,主要是为了方便程序运行时显示程序的进度

     在detail\util.hpp中,第47行,将enable_log置1.

[cpp] view plain copy
  1. #define ENABLE_LOG 1 


2.4 转发者的工程搭建:

      将C:\Program Files\Opencv\opencv\sources\samples\cpp中的stitching_detailed.cpp也复制到工程文件夹中。

opencv中stitching环境搭建(一)_第3张图片

只需要stitching_detailed.cpp这个文件就可以了。因为具体的包含文件它已经写好了

opencv中stitching环境搭建(一)_第4张图片

其余都是opencv的环境配置,创建一个OpencvEnviron.props,里边配好包含文件,库文件,链接库附加依赖项。

opencv中stitching环境搭建(一)_第5张图片

这里可以参考:https://www.zhihu.com/question/24400428/answer/32196579 很方便,不用每个opencv工程都要配置一下

VS2013怎么配置opencv才能不用每次都重新配置一遍?

     这样运行程序的时候就会显示出:
opencv中stitching环境搭建(一)_第6张图片

3.最终工程构建如下:

opencv中stitching环境搭建(一)_第7张图片

opencv中stitching环境搭建(一)_第8张图片

两者工程目录比较,效果立刻显现。

4.参考资料

OpenCV2.4.5 + QT4.8.4 + VS2010 环境搭建

Opencv2.4.9官方文档




你可能感兴趣的:(机器视觉全景图拼接,机器视觉,opencv,图像拼接,stitching)