zoukankan      html  css  js  c++  java
  • 【OpenCV入门教程之二】OPENCV3 开源之美 — 编译源代码、配置opencv_contrib

    为什么要配置opencv_contrib?

    opencv3.0版本 功能更加模块块,一些功能模块不够完善,等足够完善在merge到主分支中,而我们图像识别中要用到的SIFT等算法被封装在xfeacture模块并且不在主分支,所以要用的时候需要编译它 
    [ opencv_contrib-github地址 ]

    工具准备

    1. VS2013 (VS系列,我这边用的是2013版本)
    2. cmake 
      想要在Windows平台下生成OpenCV的解决方案,我们需要一个名为cmake的开源软件,可以在camke的官网:http://www.cmake.org/上下载到 
      • 首先转到其下载页面。下载页面的Source distributions处可以下载到cmake软件的源码,如果对这款开源软件感兴趣,不妨看看
      • 而Binary distributions处可以下载到cmake的执行文件,我们只需要下载到其执行文件即可,选择Windows (Win32 Installer)进行下载,点击这里直接下载:http://www.cmake.org/files/v3.4/cmake-3.4-win32-x86.exe, 安装教程挺简单的,略(上面步骤实在不会,可参考:ORZ浅墨大神)

    使用cmake生成OpenCV源代码工程的解决方案

    在上面的github README.md里面有提供详细的教程

    有两种方案选择:

    • You can build OpenCV, so it will include the modules from this repository. Here is the CMake command for you:
    $ cd <opencv_build_directory>
    $ cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules <opencv_source_directory>
    $ make -j5

    As the result, OpenCV will be built in the with all modules from opencv_contrib repository. If you don’t want all of the modules, use CMake’s BUILD_opencv_* options. Like in this example:

    $ cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules -DBUILD_opencv_legacy=OFF <opencv_source_directory>
    用命令行简单粗暴,不过我在使用的时候出现错误,说缺少某些库文件,google了一番说还要要控制其他参数,为了弄个万能教程,我们采用下面的方法
    • cmake-gui 
      If you prefer using the gui version of cmake (cmake-gui), then, you can add opencv_contrib modules within opencv core by doing the following: 
      1. 启动cmake-gui
      2. 选择opencv source code 文件夹 和 where binaries will be built个人的存放如图所示,注意build里面的内容是之后要进行opencv配置的 如图
      3. 按configure按钮进行进行第一次configure,第一次时间有点长,成功之后如上图所示
      4. 在search那里搜索OPENCV_EXTRA_MODULES_PATH 并在value那栏选择文件夹的方式(browse button)找到opencv_contrib的存放地址(/modules) 
        这里写图片描述
      5. 再次按下configure button,之后在按generate button
      6. 看到Generating done字样,没有报错,大功告成

    可以去之前我们指定的D:opencv3opencvuild下找寻我们生成的解决方案了。

    INSTALL

    用cmake工具生成解决方案之后,还要做的一步就是install,如果是用命令行的方式,只需要 cmake install 
    或者将解决方案sln导入VS 
    1. 打开OpenCV的解决方案,右击CMakeTargets下的INSTALL,选择“生成”,生成Debug版的dll和lib 
    2. 如果需要Release的话,修改配置为“Release”,重复步骤1,生成Release版的dll和lib 
    3. 生成完毕,在OpenCV解决方案下的install文件夹里就有了dll,lib和h头文件了。这里写图片描述 
    4. 虽然生成了库文件了,如果可以Debug跟踪源码,还得保留OpenCV解决方案

    重新配置环境

    注意的一点是,我一开始用的是官网opencv3.0的包,在 
    上篇blog[http://www.cnblogs.com/france/p/4853706.html] 已经讲解了如何配置开发环境了,或者参考http://blog.csdn.net/poem_qianmo/article/details/19809337 
    那么这里要注意的是

    • Path重新配置,然后记得重启
    • VS property pages 中 
      VC++ Directories 的include Directories(.hpp存放地) 改成如下(就是换了地址)
    D:opencv3opencvuildinstallincludeopencv2;
    D:opencv3opencvuildinstallincludeopencv;
    D:opencv3opencvuildinstallinclude;

    Library Directories(lib存放地) 更改地址 
    D:opencv3opencvuildinstallx86vc12lib

    • Linker Input中修改为如下:
    opencv_imgproc300d.lib;
    opencv_imgcodecs300d.lib;
    opencv_highgui300d.lib;
    opencv_features2d300d.lib;
    opencv_core300d.lib;
    kernel32.lib;user32.lib;
    opencv_xfeatures2d300d.lib;
    opencv_ts300d.lib;
    gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)

    具体的lib文件名,可在D:opencv3opencvuildinstallx86vc12lib 中找到,不一样要全部都加进去(当然都加进去最好,我这里只加了一些我比较会用到的lib),300表示3.00版本,+d表示debug否则为release版本, 
    而在原来我们官网下的opencv3.0基本版只要加opencv_ts300d.lib;opencv_world300d.lib;但是我们自己编译完发现opencv_world300d.lib;已经舍弃了,换成各种各样详细的包了,和2.x的加的lib个数差不多,因为是完整版本了。

    PS:如果在写代码和编译的时候没有提示错误,说明hpp文件和lib引用是存在的,但是在链接和运行的时候报错说没有找到相应的方法,就是没有配置上面具体lib,动态链接的时候出错

    PS2:CSDN的markdown炒鸡好用,博客园要加油了

    参考: 
    http://www.nmtree.net/2014/03/19/windows_build-opencv-with-cmake-and-vs2013.html 
    http://blog.csdn.net/poem_qianmo/article/details/21974023 
    http://blog.csdn.net/poem_qianmo/article/details/19809337

  • 相关阅读:
    BZOJ 1088 模拟(扫雷经验…)
    BZOJ 1529
    BZOJ 3224
    BZOJ 1192
    BZOJ 1012
    博客搬家说明
    BZOJ 2423 DP
    BZOJ 1789&1830 推式子 乱搞
    BZOJ 1588
    拆点:虫洞
  • 原文地址:https://www.cnblogs.com/france/p/4859614.html
Copyright © 2011-2022 走看看