本文主要记录了使用 CUDA 8.0,Visual Studio 2015,Win10 来编译 OpenCV 4.0.1 的步骤。
安装流程
[1]. 安装好 CUDA 8.0. 各种路径添加到环境变量。
[2]. 下载 Opencv 源码到
<OpenCV_DIR>
及 对应版本的 opencv_contrib 到<OpenCV_CONTRIB_DIR>
.
[3]. Cmake 生成 VS solution。
3.1 打开 cmake. 在where is the source code
中填入<OpenCV_DIR>
, 在Where to build the binaries
中 填入<OpenCV_DIR/build>
。
3.2 点击 configure, 选择Visual Studio 14 2015 Win64
. (一定要选带有 Win 64 字样的,否则会出错)
3.3 点击 Finish。会进行 Configure。中途可能会跳出红色错误,这是由于下载 ffmpeg, ippicv, data, xfeatures2d 相关的文件失败造成的。报错信息里会提示查看 log 文件,打开 log 文件后,根据信息,手动到网址下去下载 dll, zip, cmake 等文件,下载好后,以<MD码>-<name>.<ext>
的方式命名,放在<OpenCV_DIR/.cache>
下的相关路径中。重新点击 configure.
3.4 勾选中复选框BUILD_opencv_world
,WITH_CUDA
,OPENCV_ENABLE_NONFREE
. 将<OpenCV_CONTRIB_DIR/modules>
路径添加到OPENCV_EXTRA_MODULES_PATH
中,再次点击 Configure.
3.5 勾选CUDA_FAST_MATH
, 点击 Configure. 屏幕上应该一片白,没有红色信息.
3.5 点击 Generate 以生成 sln. 此过程不应报错。
[4]. VS 编译 Opencv.sln
4.1<OpenCV_DIR/build>
下打开 OpenCV.sln, 点击 生成 -> 配置管理器,选择Release
,x64
.
4.2 将color_detail.hpp
的96-127
行的const
替换为constexpr
. 否则会出现error : dynamic initialization is not supported for a __constant__ variable
的错误. 来源1 来源2
4.3 生成ALL_BUILD
. (主要关注 opencv_world 工程,此工程生成成功即可,实际过程中出现了 opencv_perf_gapi 和 opencv_test_gapi 工程报错的问题,貌似对我们的项目没有影响。)
4.4 成功生成ALL_BUILD
后 (生成了 opencv_world401.lib 和 opencv_world401.dll),右键INSTALL
->仅用于项目
->仅生成INSTALL
.
4.5 在<OpenCV_DIR/install>
下是最后得到的 lib, dll,头文件等。
参考文档
【OpenCV】opencv4.0.1+opencv_contrib4.0.1+VS2015的编译