OpenCV 3.3在8月3号正式Release,带来了许多优化改进和新特性,包括备受关注的深度神经网络(DNN)模块被正式引入主仓库,标志着OpenCV对DNN有了更深层次的优化与支持; 支持通过宏ENABLE_CXX11启用对C++ 11特性的支持;默认包含大量SSE4.X和AVX/AVX2指令集优化;内置Intel IPP版本升级至2017.2,官方测试显示有近15%的性能提升...等等,更多细节可以参考,另外如果你现有代码基于OpenCV 3.x的话,建议进行版本升级~
编译OpenCV的源码并不复杂,或者说十分简单(相对于部分老项目而言),并且对Visual Studio的支持也很友好,但首次编译的话对整个流程以及过程中一些开关可能会存在一些疑问。如果你不想自行编译也可以使用官方预编译好的文件,但是有些模块可能是用不到的,所以我们还是希望能尽可能自定义模块。
本文假设读者已经安装了 CMake 和 Python (2.x或3.x)
一、准备资源
opencv-3.3.0-vc14.exe,建议使用sourceforge下载,因为相比github这玩意有直链并且有不同镜像可选,可以直接使用第三方下载器下载,速度比较快。
二、准备源码
直接运行下载好的exe,选择解压到的目录,并提取sources文件夹,目录结构大概如下:
三、生成项目
打开CMake GUI,设定好目录选择Configure,然后选好IDE(Visual Studio 2017 WIN64)并Finish,等待初始配置完成(生成cvconfig.h)...
正常情况下直到Configuring done是不会发生错误的,然后上面配置项是红色的,提示有些东西需要人工改动,基本步骤就是查看输出,如果发现有外部库找不到,比如"A library with XXX API not found"或者"Could NOT find XXX (missing XXX)"之类的,根据需求把相应的库的路径加上,或者不需要的话直接去掉相关依赖的编译,还可以做到0 warnings多好的事情~
这里大概有几个提示:
首先因为我们是当成库使用,不会去调试OpenCV本身,所以把和最后开发无关的开关关掉,比如BUILD_DOCS,BUILD_EXAMPLES,BUILD_XXX_TESTS,BUILD_opencv_ts(一些单元测试代码),BUILD_PACKAGE (CPACK_BINARY_XXX,CPACK_SOURCE_XXX),INSTALL_XXX
前面说了C++ 11特性支持,当然是选择打开它,ENABLE_CXX11
为了方便项目配置和调试,在生产环境中建议打开BUILD_opencv_world,把各OpenCV模块编译成一个世界模块,这样最后生成的只有一个.lib或者.dll(后者需要打开BUILD_SHARED_LIBS开关),但在发行版本中建议按需引入相应模块以减少体积(除非你每个模块都有使用到)。
如果你不涉及音视频处理,可以关掉相关模块,大概包括BUILD_opencv_video,BUILD_opencv_videoio,BUILD_opencv_videostab,WITH_1394,WITH_GSTREAMER_XXX