目前(2017.11)OpenCV最新版本为3.3.1,提供了vc14(VS2015)的运行库,但未提供VS2017的运行库。要想在VS2017中使用,可以用CMake + VS2017重新编译源代码。
同时,OpenCV官方也只提供了Python2.7版本可以调用的库,若想在python 3.6.3 中使用,则需要重新为python3编译。
若需要在Qt或C#中使用可参考本人其他博客。
Step 1 安装相关软件
软件安装部分比较简单,没有什么需要特别注意的,因此不再赘述。
本文使用的系统及软件版本(总之都是目前最新的):
- Windows 10 x64
- OpenCV 3.3.1
- CMake 3.10.0
- Visual Studio 2017 Community
- Python 3.6.3 (Anaconda3) (可选)
- opencv_contrib-3.3.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 。