Windows下利用CMake和VS2013编译OpenCV

获取OpenCV有两种途径,一是预编译好的库,二是下载源代码自己编译。OpenCV官网http://opencv.org/提供

Fork me on GitHub

下载的OpenCV既包含编译好的库,也包含源代码。通过OpenCV官网右上角的彩带,可以获取托管在GitHub上的OpenCV最新源代码。本篇博文就是利用CMake和VS2013编译GitHub上获取的最新源代码。

先来说一下自己编译的好处。

  1. 由于获取的是最新源代码,所以可以在OpenCV发布某个版本之前利用集成进来的高级功能;
  2. 自己编译可以在程序调试时跟踪源码;
  3. 预编译的库不包含一些功能,比如TBB,如果想使用这些功能只能自己动手了。

总之,应了那句俗话:自己动手,丰衣足食

编译源代码用到的工具包括:VS2013、CMake、Git工具(TortoiseGit),TBB(如果需要包含进来的话)。

一、使用CMake生成VS2013的OpenCV解决方案

  1. 利用TortoiseGit获取最新的OpenCV源代码,放在C:\OpenCVLatest。
  2. 在OpenCVLatest目录下新建目录build\vs2013x64,用于放置生成的解决方案和编译好的库。
  3. 打开CMake,在Where is the source code后面的文本框选择OpenCV的源代码,Where to build the binaries选择第2步新建的文件夹vs2013x64,如下图所示:20140319201930
  4. 点击“Configure”按钮,在弹出的对话框中,选择“Visual Studio 12 Win64”,使用默认的本地编译器,如下图所示:20140319201955
  5. 点击“Finish”之后,等待配置完成,如下图所示:20140319202209
  6. 找到WITH_TBB,勾选:20140319202244
  7. 再次点击“Configure”按钮,配置完成出现红色标记,修改TBB_INCLUDE_DIRS的Value为:C:\OpenCVLatest\tbb42_20140122oss_win\tbb42_20140122oss\include20140319202342
  8. 再次点击“Configure”按钮,会出现如下所示:20140319202425
  9. 这个地方需要注意一下,因为生成的Value值到intel64,这里需要修改为intel64/vc12,对应vs2013,如下图所示:20140319202519
  10. 再次点击“Configure”按钮,这时就没有红色标记出现了,点击“Generate”按钮,生成OpenCV的解决方案。

二、VS2013编译OpenCV解决方案生成库

  1. 打开OpenCV的解决方案,右击CMakeTargets下的INSTALL,选择“生成”,生成Debug版的dll和lib,如下图所示:20140319202757
  2. 修改配置为“Release”,重复步骤1,生成Release版的dll和lib,如下图所示:20140319202844
  3. 生成完毕,在OpenCV解决方案下的install文件夹里就有了dll,lib和h头文件了。20140319211301
  4. 虽然生成了库文件了,如果可以Debug跟踪源码,还得保留OpenCV解决方案。

三、生成过程中遇到的错误

通过CMake生成解决方案的过程中由于不仔细,导致后面生成时遇到了一些error LNK1104错误,比如说无法打开opencv_core300d.lib,无法打开tbb_debug.lib之类。原因就是在指定的目录找不到这些文件,其实出现这些问题的根本原因是在配置TBB的时候配置错了,必须在intel64后面加上那个vc12,否则找不到。通过查看附加库目录就可以知道配置的是否正确,如下图所示:

20140319212709

四、结束语

本篇博文,到此就结束了。对于想学习OpenCV,对计算机视觉有兴趣的朋友,动手编译自己的OpenCV库,应该是一个不错的开始。对文章中出现的不足和错误,欢迎指正。

如果本篇文章对你有所帮助,烦请扫描下方二维码关注一下我的公众号“程序旅途”

qrcode_for_gh_71d38a91773e_258

分享到: 更多

已有11条评论 发表评论

  1. 引用通知: 基于VS2013搭建OpenCV开发环境 | 柠檬树博客 /

  2. 引用通知: OpenCV概要介绍 | 柠檬树博客 /

  3. 匿名 /

    😉 😛

    1. 匿名 /

      挺好的。

  4. 匿名 /

    Where is the source code目录选择错误,应该选择解压opencv后的source文件夹下:比如D:\opencv\sources

    1. HaydnLiao /

      文章说的是GitHub上获取的,只有源码。

  5. 匿名 /

    错误 133 error MSB6006: “cmd.exe”已退出,代码为 -1073741571。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets 172 5 opencv_bioinspired
    错误 406 error LNK1181: 无法打开输入文件“..\..\lib\Release\opencv_bioinspired310.lib” E:\OpenCV\build\vs2012x64\modules\bioinspired\LINK opencv_perf_bioinspired
    在build OpenCV.sln的时候我一直出现这个出错

    1. ming /

      你这个问题解决了吗?

    2. 匿名 /

      你好,我也遇到了和你一模一样的问题,请问你是怎么解决的?

  6. 匿名 /

    我的点击配置时出现
    “Error in configuration process, project files may be invalid”
    vs2013,openCV3.1.0,这个怎么解决啊

    1. 匿名 /

      用cmake编译opencv3.0以上的版本的时候,会有几个dll文件下载不下来(因为连接都是国外的,被墙了,除非你挂VPN),CSDN上有资源,可以下载,分别是opencv_ffmpeg.dll和opencv_ffmpeg64.dll,不同的机器可能要求会有所不同,但是应该都能在网上找什么,根据提示,缺什么补什么就行了

发表评论