Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)

Step 1

下载 opencv4.1 和 对应版本的 opencv_contrib
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第1张图片
然后找个地方解压 opencv,在此我放在了 D 盘。然后在里面新建一个空的 build 文件夹,同时将 opencv_contrib 解压之后放进去(其实放哪里无所谓,为了方便这里我还改了一下名),路径不要涉及中文
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第2张图片
Step 2
下载 cmake, 这里我使用的版本是 3.15.0,根据自己是 32 位还是 64 位来下载(x86指32位系统,x64指的是64位系统),这里的安装应该没什么大问题,可参考 https://blog.csdn.net/u011231598/article/details/80338941
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第3张图片
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第4张图片
安装成功的话,在 cmd 输入 cmake 会看到下面的信息

Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第5张图片
Step 3

cuda toolkit 安装(不需要使用 cuda 模块的可忽略)

这里不重点介绍,详情可参考 https://blog.csdn.net/qq_37296487/article/details/83028394

安装成功后在 cmd 输入 nvcc -V 来验证,成功的话如下所示
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第6张图片
Step 4

万事俱备,重头戏来了,打开 CMake Gui, 填写如下路径。source code 是 opencv 的路径,binaries 是刚刚新建的 build 的路径。填好之后点击 configure
在这里插入图片描述
选择你的 vs 版本,在此使用的是 vs2017,同时下面记得选 x64
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第7张图片
打勾的是需要 configure 的东西,我第一次先直接用默认的,反正漏的后面还可以补。然后等待第一次 configure,完成之后会显示 Configuring done。中途可能会因为网络原因(需要访问外网)而出错,所以需要挂代理服务器来解决这个问题,如果有东西没下载成功往后再多 configure 几次试试。这里可能会有各种错误,只能说具体报错具体分析了。

接着我们开始第二次 configure,首先是勾上 BUILD_opencv_world, 然后是为 OPENCV_EXTRA_MODULES_PATH 添加 opencv_contrib的modules的路径
如果你想用 SURF,SIFT算法的话需要把 OPENCV_ENABLE_NONFREE 勾上
如果需要用到 cuda 的话,把 WITH CUDA 勾上
为了缩短编译时间, BUILD_TESTS 和 BUILD_PERF_TESTS 可以不要
然后我们最好把 BUILD_EXAMPLES 勾上

勾完之后点击 configure 开始第二次配置

Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第8张图片
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第9张图片
对于有cuda需求的人,为了加快编译速度,我们可以设置 CUDA_ARCH_BIN 的值。在第二次 configure 结束之后,我们搜索 CUDA_ARCH_BIN, 可以看到 2.0 3.0 3.5 3.7… 之类的数字,我们指定其中一个。至于如何指定,我们可以根据 https://developer.nvidia.com/cuda-gpus 上面提供的数据来指定,这里我用的是 GeForce GTX 960M,所以指定为 5.0,然后我们开始第三次 configure

Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第10张图片
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第11张图片
接着我们点击 generate,可以看到在 build 中 看到 sln 文件了
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第12张图片

Step 5

我们点击 sln 文件,进入到 vs。打开工程后,点击菜单栏“生成”-》“批生成”,如图
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第13张图片
如图中4个复选框都勾上,点击“生成”一次全部生成
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第14张图片
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第15张图片
然后编译就开始了,如果没有涉及 cuda 的话约半小时结束,涉及 cuda 的话会长达几个小时,这时候就可以放在这里跑了,我是跑了三个多小时。中途可能会出现很多 warning,不用管,只要没 error 就好。
结束以后在 install 文件夹里面可以看到这些
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第16张图片
Step 6

我们为环境变量增加一项
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第17张图片
将 build\install\x86\vc15\bin目录里的 opencv_ffmpeg410_64.dll, opencv_world410.dll 和 opencv_world410d.dll 文件复制到C:\Windows\SysWOW64 这个文件夹里
结尾有 d 的对应 debug,反之对应 release

然后我们用 vs 新建一个项目来测试(每新建一个项目都要如下设置一次),打开 VC++ 目录,如下设置包含目录和库目录

Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第18张图片
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第19张图片
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第20张图片
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第21张图片
在链接器中的常规设置如下附加依赖项,想用 debug 模式就设置含 d 的,反之设置不含 d 的,但是不可以两个同时设置。
Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda)_第22张图片
最后我们用简单的代码来测试一下,解决方案平台要设置成 x64
在这里插入图片描述

#include
#include
#include

using namespace std;
using namespace cv;
using namespace cv::cuda;

int main()
{
	Mat frame;
	VideoCapture capture(0);
	while (1) {
		capture >> frame;
		imshow("father", frame);
		waitKey(1);

	}
	
	system("pause");
	return 0;
}

你可能感兴趣的:(Windows10+VS2017+cmake 编译opencv4.1 + opencv_contrib(含cuda))