【Win10 + CMake 3.7.0-rc1 + VisualStudio 2015 】【OpenCV2.4.13 + tbb】重新编译

来源:互联网 发布:微信拼车源码 编辑:程序博客网 时间:2024/06/05 10:49

问题起源

尝鲜安装了visual studio 2015 Professional版本,并且升级到Update 3,发现OpenCV没有提供适应VS2015编译好的版本。
因此,我尝试利用CMake 3.7.0-rc1(x64)和VS 2015 Pro对OpenCV 2.4.13的源码进行编译。


注:实际上OpenCV 3.0中有编译好的版本,但是由于版本更新过程中触及了SIFT等一大批专利的问题,导致OpenCV3.0以后的版本中没有nonfree的库,图像处理中常用的特征提取无法用。因此这就解释了为什么题主花精力非要编译2.4.13版本。


编译工具配置

  1. HASH文件校验工具
    下载文件的校验非常重要,特别是编译环境工具和代码相关文件,切记切记!仍记得当年看到的白帽子大会上那个隐藏在编译器中的可怕魔鬼,尽管md5校验已经被证明有漏洞了,但目前只能用这种办法确定。我选择了“深空HASH计算工具 V2.0”,这是为了能够比对CMake提供的SHA-256,通常使用的Hash 1.04工具不能够提取SHA-256。
  2. VS2015 Pro Update3
    我是利用学生账号在微软官方上下载的,并且通过了文件校验。

  3. CMake 3.7.0-rc1
    CMake官网上下载的稳定版本,建议有能力都下载x64版本,这样对后续的编译有好处。下载后通过文件校验后安装。

OpenCV源码和其所使用第三方库下载

  1. OpenCV 2.4.13
    OpenCV官网下载:下载页面链接。通过文件校验后进行提取(Extract),请保证提取的路径是全英文/数字/下划线符号组成,尽量不要包含中文和特殊字符。

  2. tbb下载
    tbb全称是Threading Building Blocks,线程构建模块,是Intel公司开发的并行编程开发的工具。opencv的源码中已经对tbb进行了一定程度的封装,部分是经过优化的。因此在用Cmake编译OpenCV过程中最好加入tbb。
    tbb下载:tbb官方网站首页。

编译过程

本文中以64位编译为例说明,配图也均是64位编译的流程。

  1. CMake编译
    首先,填入opencv源码所在文件夹路径和编译的目标生成路径,并点击下方的Configure按钮。这里,”…/opencv/sources”就是刚才下载好的opencv进行解压后的源码目录 。”…/x64/vc14”是我自己新建用来存CMake生成的visual studio工程文件的目录(CMake在本任务中的功能就是利用源码生成VS2015工程)。
    CMake编译第一步
    然后,在出现的对话框中选择合适编译器,如果是64位编译请选择“Visual Studio 14 2015 Win64”,如果是32位编译请选择“Visual Studio 14 2015”。
    CMake编译第二步
    点击“Finish”,等待下方的状态窗口中出现“Configuring done”的字样。这时出现的Warning可以忽略,这是由于OpenCV源码中没有VERSION的定义造成的。接下来将配置空间中的WITH_TBB项目点选,如下图所示。
    CMake编译第三步
    重新点击“Configure”。出现错误,如下图图所示
    CMake编译第四步
    这是因为没有输入tbb的包含目录TBB_INCLUDE_DIRS,按照解压缩的路径输入合适包含路径
    CMake编译第五步
    再次点击“Configure”,注意检查TBB_LIB_DIR和TBB_STDDEF_PATH是否正确,如下图是正确的情况:
    CMake编译第六步
    点击“Generate”即可生成VS2015工程,下方状态窗口中出现“Generating done”字样即可。
    CMake编译第七步
    至此,CMake编译全部结束。

  2. VS2015编译
    用VS2015打开CMake编译好的工程文件(或者可以直接在CMake的gui界面点击“Open Project”),工程文件位于CMake的输出路径中:
    VS编译第一步
    接下来,修改CMakeTargets项目文件夹中的ALL_BUILD项目的选项,如图所示,分别在可执行文件目录,包含目录,库目录中添加tbb的相关路径。
    VS编译第二步

点击“应用”,“确定”,并重新生成ALL_BUILD,ALL_BUILD生成成功后重新生成 INSTALL,成功后可以再工程文件所在的同级路径下发现新生成的install文件夹(具体路径为…/install/x64/vc14以及…/install/include),其中有编译好的opencv。
至此只是完成了Debug模式下的编译,将整个解决方案切换到Release模式,重新配置ALL_BUILD的属性,重新生成ALL_BUILD和INSTALL。至此VS2015编译部分结束,将…/install/include与…/install/x64目录拷贝一份即可添加opencv到自己的工程中。

1 0
原创粉丝点击