使用 CMake + VS2017 ( + Python 3) 配置和编译 OpenCV 3.3

目前(2017.11)OpenCV最新版本为3.3.1,提供了vc14(VS2015)的运行库,但未提供VS2017的运行库。要想在VS2017中使用,可以用CMake + VS2017重新编译源代码。
同时,OpenCV官方也只提供了Python2.7版本可以调用的库,若想在python 3.6.3 中使用,则需要重新为python3编译。
若需要在Qt或C#中使用可参考本人其他博客。

Step 1 安装相关软件

软件安装部分比较简单,没有什么需要特别注意的,因此不再赘述。

本文使用的系统及软件版本(总之都是目前最新的):

说明:

  • OpenCV可以在Git下载源代码,或在sourceforge下载文件解压,只使用其中的sources。
  • CMake版本最好是最新的否则不支持VS2017。
  • Visual Studio安装时必须选择安装VC。

Step 2 使用CMake生成项目文件

打开cmake-gui,选取sources和build的路径(如build_vc15),点击configure,若路径不存在会提示创建。

弹出对话框,选择IDE及平台,这里选择Visual Studio 15 2017 Win64,下方Use default native compilers 保持不变,点击finish。

之后CMake会自动寻找C/C++编译器,并根据硬件情况等进行自动配置,期间会尽可能地寻找存在的第三方库,比如:Ant、clAmdBlas、clAmdFft、CUDA、EIGEN、GLib、GStreamer、MKL、LAPACK、VTK …… 如果有需要,找不到的可以手动指定路径。过程中会自动下载ffmpeg的库文件,因此不联网可能报错。下方会生成General configuration for OpenCV 3.3.1信息,这就是首次自动配置的结果。

完成后中间出现大量红色配置,除一些路径配置之外,其中需要注意的几个选项:

  • BUILD_opencv_world :将.lib或者.dll文件统一整合进一个world文件中,方便使用。但若想只使用一部分模块可不勾选以减少体积。生成动态链接库dll需要勾选BUILD_SHARED_LIBS
  • ENABLE_CXX11 :支持C++11特性
  • OPENCV_EXTRA_MODULES_PATH :若使用opencv_contrib模块,则在此处填写解压后的路径,如 …\opencv_contrib-3.3.1\modules\
  • BUILD_EXAMPLES :项目文件中会包含sample工程,按需勾选。
  • INSTALL_C_EXAMPLES :将在install文件夹中编译出一些示例程序(但都是.exe,因此想参考最好还是看sources中的源代码)

不建议勾选:

  • BUILD_DOCS :生成文档,需要安装Doxygen,文档可在官网查看。
  • BUILD_opencv_ts :一些单元测试代码,参考文章1
  • INSTALL_TESTS :与开发无关,参考文章1
  • BUILD_opencv_saliency文章2 中指出win10下不能勾选,但实际上并未发现此项。

文章1 中还提供了很多模块及项目的解释,可根据自己需要修改。

修改之后再次点击configure进行配置,红色会消失。若有错误提示,则检查是否勾选了某项而未添加路径。

完成后点击Generate,开始生成项目文件。

Python 3与OpenCV 3

OpenCV官方只提供了Python 2.7可以使用的库文件.pyd(其他语言写成的可以被python调用的扩展),若想在python 3.6.3 中使用,则需要重新为python3编译。

若之前安装过python3或Anaconda3,并将路径添加进系统环境变量中过,CMake将会自动寻找到它们的路径。否则需要手动添加路径。

配置时与python有关的:

  • opencv_python :若CMake找到python3路径则会自动勾选。
  • BUILD_opencv_python3 :若CMake找到python3路径则会自动勾选。
  • INSTALL_PYTHON_EXAMPLES :在 …\install\samples\native\python 生成python示例,经比较与sources文件夹下示例相同,可不勾选。

想生成在python 3 下用的.pyd,保证python3路径填写无误,并勾选上面的前两项即可。

Step 3 编译

很多教程在此步骤会打开VS进行项目的编译,事实上这里有更便捷的办法,并且若生成Python库必须这样做。

在生成项目的文件夹(如build_vc15)空白处,按住shift 的同时点击鼠标右键,点击“在此处打开powershell窗口”,键入如下命令:

Release模式

cmake.exe --build . --config Release --target INSTALL

Debug模式文章2 中指出debug模式需要去掉 INSTALL_PYTHON_EXAMPLES、BUILD_opencv_python3 和BUILD_opencv_python2 这三项的勾选,经测试若勾选会编译失败。

cmake.exe --build . --config Debug --target INSTALL

等待编译完成即可。

Step 4 保留build路径下有用的部分

本人编译完成后得到的build_vc15文件夹大小高达7.24G,但其中大部分都是不需要的文件,有用的文件夹主要有两个:

\build_vc15\install (218 MB),它的目录结构如下:

install
├─etc
│  ├─haarcascades   
│  └─lbpcascades       
├─include
│  ├─opencv 
│  └─opencv2
├─samples
│  └─native
│      └─python     
└─x64
    └─vc15
        ├─bin    
        ├─lib 
        └─samples

其中:

  • /etc:训练好的分类器,可以用在人脸识别等程序中
  • /include:opencv需要的头文件
  • /samples:python的例程(.py),若勾选INSTALL_PYTHON_EXAMPLES会生成
  • /x64/vc15: 64位vc15所需的动态运行库(bin)、静态运行库(lib)、及例程(samples, .exe)

\build_vc15\lib\python3\Release (3.72 MB):
此文件夹下为可在python 3中调用的pyd文件:cv2.cp36-win_amd64.pyd

因此,只要保留上述两个路径的文件即可保证opencv正常使用,其中的示例其实也可以删除。

Step 5 项目配置

项目配置随便一搜索就有大量的文章教程,这里就不再赘述了,与本文相关的几点:

  • 如果在VS项目中使用opencv,可以参考文章1属性表的配置,避免了为每一个工程配置属性。使用动态链接库DLL的话,将\build_vc15\install\x64\vc15\bin 加到系统环境变量PATH里,可以方便调试。
  • 如果在Python中使用opencv,将之前的cv2.cp36-win_amd64.pyd改名为cv2.pyd ,再拷贝到Python目录,比如我这里使用anaconda路径为:D:\Anaconda3\Lib\site-packages 即可。使用时 import cv2

参考

  1. http://blog.csdn.net/rrrfff/article/details/76796261

  2. https://www.learnopencv.com/install-opencv3-on-windows/

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值