VS2015下编译OpenCV 3.1

本文介绍一下如何从源码编译OpenCV 3.1,使用的环境是Win10 64bit + VS 2015。

下载源文件

  1. OpenCV 3.1 Release
  2. CMake GUI 3.7.1

运行Cmake

打开CMake GUI,选择Browse Source...指定源文件路径,Browse Build...指定目标文件路径;之后点击Configure,会弹出一个对话框选择Generator,对于VS2015来说选Visual Studio 14 2015Visual Studio 14 2015 Win64,前者是32位,后者是64位。确定后CMake会自动下载一些依赖文件,所以需要保证良好的网络连接,不过其中ippicv_windows_20151201.zip文件会因为网络问题始终无法成功下载,可以从网上搜索这个文件下载下来,比如从这里

如果最终的状态是Configuring done,且列出了此时可用的设置,说明配置成功,再点击Generate即可生成VS工程,默认的配置是可以正常编译使用的。

需要注意的是,选择Win32编译32位版本是完全正常的,不过选择Win64编译64位版本时,Debug版可以正常编译通过,而Release版则无法编译成功,显示编译器内部错误,根据网上的资料这应该是VS2015的Bug。故使用VS2015编译OpenCV 3.1时建议使用32位模式进行编译。

VS编译

点击Open Project按钮打开生成的VS工程,待其完全载入后即可编译了,需要注意的是,不要使用默认的生成解决方案(F7)进行编译,这样最终得到的install文件夹中的内容是不全的。正确方法是在INSTALL工程上点右键,选择生成,单独编译生成此工程。

正常情况下是可以成功编译生成的,最终的得到的所有所需文件都位于目标文件路径下.\install文件夹中,其中.\install\include文件夹中存放的是头文件,.\install\x64\vc14\bin文件夹中是dll动态链接库文件,.\install\x64\vc14\lib.\install\x64\vc14\staticlib中都是库文件。

不过如果想对OpenCV源码进行Debug跟踪,是不能选用.\install文件夹中的库文件的,因为此处缺少.pdb调试文件,无法正常Debug。此时需要使用.\lib文件夹中的库文件,这时可以正常的跟踪到源代码中,且使用profiler分析代码性能时也可以正确定位到OpenCV内部函数上。

定制优化OpenCV

上面生成的文件已经是可以正常使用的了,不过自行编译源代码的一大优点就是可以根据自己的需求进行配置。

使用World模块

默认情况下编译结果是很多的lib文件及dll文件,使用起来不是很方便,OpenCV提供了一个World Module的功能,可以把生成的文件链接在一起,合成一个dlllib文件。选取BUILD_opencv_world即可。不过实际测试表明,使用了World模块后编译的时间会明显变长,故是否使用根据需要决定。

去除不需要的功能

根据需要去掉一些不需要的功能即可,如WITH_1394等。

开启CPU指令集支持

根据使用的CPU,可以开启ENABLE_AVXENABLE_FMA3等矢量指令集支持功能,以提高整体性能。

文章目录
  1. 1. 下载源文件
  2. 2. 运行Cmake
  3. 3. VS编译
  4. 4. 定制优化OpenCV
    1. 4.1. 使用World模块
    2. 4.2. 去除不需要的功能
    3. 4.3. 开启CPU指令集支持