1050Ti+CMake3.15.0+openCV4.1.0+cuda10.0+VS2017环境配置详解

前言

从开始配 OpenCV 的 cuda 环境到成功中间历时一个礼拜,觉得有必要记录一下。不得不说,这个东西真的玄学,别人能配成的一套自己无论如何就是成不了,真糟心。

在这里插入图片描述

1. 安装包下载地址

1.1. 官方下载路径

CMake3.15.0:
https://github.com/Kitware/CMake/releases/tag/v3.15.0
OpenCV4.1.0:
https://sourceforge.net/projects/opencvlibrary/files/4.1.0/opencv-4.1.0-vc14_vc15.exe/download
opencv_contrib4.1.0:
https://codeload.github.com/opencv/opencv_contrib/zip/refs/tags/4.1.0
cuda10.0:
https://developer.nvidia.com/cuda-10.0-download-archive
cudnn7.6.1:
https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v7.6.1.34/prod/10.0_20190620/cudnn-10.0-windows10-x64-v7.6.1.34.zip
VS2017 Enterprise:
https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/

1.2. 其他下载路径

CMake3.15.0+OpenCV4.1.0+opencv_contrib4.1.0+VS2017
cudda10.0+cudnn7.6.1 提取码:14o4

提示:要注意安装顺序,另外超长文警告。

2. 安装所需软件等

2.1. VS2017

下载得到一个可执行文件,直接双击运行进入 VS2017 的安装程序,在工作负载中勾选 ① 使用 C++ 的桌面开发;② Python 开发; ③ Visual Studio 扩展开发。之后再改变安装位置为自己想要的即可,如图我的安装路径是 E:\Microsoft_Visual_Studio_2017_Enterprise

在这里插入图片描述

我安装的是 企业版 VS,这个可以根据自己情况自由选择,社区版,企业版和专业版都是可以的。

2.2. cuda+cudnn

① 下载 cuda 得到一个可执行文件,直接双击运行进入安装程序,顺序执行即可,中间注意选择自定义(高级)。

在这里插入图片描述
之后取消勾选 VS Configuration ,否则可能会报错。

在这里插入图片描述
取消勾选之后顺序执行即可。

② 下载 cudnn 得到一个压缩包,解压后将其中 bin,include,lib/x64 中的 cudnn64_7.dll, cudnn.h, cudnn.lib文件分别拷贝到前边 cuda 安装路径下的相同路径下。

在这里插入图片描述

2.3. opencv+opencv_contrib

① 下载 opencv 得到一个可执行文件,可以直接双击运行或者直接解压缩都可以(注意改变解压后的文件夹路径),解压后得到一个文件夹 opencv。

在这里插入图片描述
解压完成后先:

将目录 E:\opencv\build\x64\vc15\bin 下:opencv_ffmpeg410_64.dll 复制到路径 C:\Windows\System32
将 opencv_world410.dll 和 opencv_world410d.dll 复制到路径 C:\Windows\SysWOW64 下

再添加环境变量:

D:\opencv4.1.0\build\bin
D:\opencv4.1.0\build\x64\vc15\bin

在这里插入图片描述
② 下载 opencv_contrib 得到一个压缩包,将其解压在前边文件夹 opencv 的同级目录下,如图(原则上解压到任何地方其实都是可以的)。

在这里插入图片描述

2.4. cmake

cmake 可以直接下载不用安装的压缩包,也可以下载它的安装程序,看个人情况。我这里下载的是 cmake-3.15.0-win64-x64.msi,双击运行会进入安装程序,注意勾选 Add Cmake to the sysyem PATH for all users 和改变安装路径即可。

在这里插入图片描述

3. 开始编译

3.1 cmake 编译

打开 CMake 软件:

source code 选择 E:/opencv/sources,
build the binaries 选择 E:/opencv/cudabuild

其中 cudabuild 是要自己建立的路径(建议新建),选择完成后进行配置:

① 第一次配置

  • 点击 Configuration 进行配置,在弹窗里注意选择 VS2017 和 x64,,配置完成会出现 Configuration done 字样,此时不用点击 Generate 进行生成。

② 第二次配置

  • 勾选 BUILD_EXAMPLES, BUILD_opencv_world, WITH_CUDA, OPENCV_ENABLE_NONFREE。
  • 给 OPENCV_EXTRA_MODULES_PATH 选择 E:/opencv_contrib-4.1.0/modules。
  • 点击Configuration 进行配置,等待 Configuration done 出现。

在这里插入图片描述
③ 第三次配置

  • 在 CUDA_ARCH_BIN 中只留自己显卡对应的算力,具体对应关系可以查看官网给出的数据,我的显卡是1050Ti,算力是 6.1。
  • 点击Configuration 进行配置,等待 Configuration done 出现。

④ 第四次配置

  • 第二次配置中会出现一些包没有下载成功的问题,只需要手动下载放到对应位置即可,详细链接和下载内容可以打开E:\opencv\cudabuild\CMakeDownloadLog.txt 查看,如果手动下载比较慢可以尝试梯子或者不断 Configuration 等。
  • 我已经将对应需要下载的包上传,自行下载不成功的的可以点击链接进行下载。
  • 配置完成出现 Configuration done 字样后点击 Generate 进行生成,生成完成后会出现 Generattion done 字样。

查看路径 E:\opencv\cudabuild 是否已经出现 OpenCV.sln 文件,如果存在则带 cuda 的 opencv 环境已经编译成功,接下来在 VS 里进行生成。

在这里插入图片描述

3.2 VS2017 生成

关闭 CMake 软件,用 VS2017 打开 OpenCV.sln 文件,等待加载成功后点击菜单栏生成,选择批生成:

在这里插入图片描述
在弹窗里分别选择 ALL_BUILDD 和 INSTALL 的 Debug|x64 和 Release|x64 l,总共四项,如图:

在这里插入图片描述
在这里插入图片描述
然后就进入长达几个小时的等待,过程中会出现很多 warning,只要不出现 error 就是没有问题的,成功后的截图:

在这里插入图片描述
生成成功后打开 E:\opencv\cudabuild\install 文件夹,可以看到如下内容:

在这里插入图片描述

3.3 测试环境

接下来可以简单使用测试代码测试一下配好的环境是否可用。

① 新建空项目

点击 文件 → 新建 → 项目。

在这里插入图片描述
选择 Visual C++ → 空项目,修改项目名称和项目路径,点击确定。

在这里插入图片描述

② 配置新项目属性

空项目建立成功,点击菜单栏 视图 → 其他窗口 → 属性管理器,打开属性管理器。

在这里插入图片描述
选择 Debug|x64 → 添加新项目属性表,在弹窗里直接选择添加。也可以不同新建属性表,直接配置 Debug|x64 下的 Microsoft.Cpp,x64.user 也是可以的,新建的原因主要是考虑以后新项目可以直接导入属性表,不用再单独配置。

在这里插入图片描述
此时在 Debug|x64 下会出现属性表 PropetySheet,右击选择属性。
在这里插入图片描述
在这里插入图片描述
在弹出的属性页里,选择 VC++ 目录 → 包含目录 → 下拉编辑,添加 cuda 路径和 opencv 相关路径:

E:\opencv\cudabuild\install\include\opencv2
E:\opencv\cudabuild\install\include C:\Program Files\NVIDIA GPU
Computing Toolkit\CUDA\v10.0\include

在这里插入图片描述
点击 VC++ 目录 → 库目录 → 下拉编辑,添加路径 :

E:\opencv\cudabuild\install\x64\vc15\lib

在这里插入图片描述
点击链接器 → 输入 → 附加依赖项,添加:

opencv_world410d.lib

在这里插入图片描述
全部完成后一定要点击应用才能在项目中应用这个项目属性表,之后点击解决方案资源管理器 → 源文件 → 添加 → 新建项。

在这里插入图片描述

在弹出的添加新项窗口里,选择 Visual C++ → C++ 文件,改变名字后点击添加。

在这里插入图片描述

此时就可以编写代码进行测试,测试代码在下边,功能是调用摄像头,将拍到的图像动态展示在一个窗口上,运行前注意选择 Debug|x64。

在这里插入图片描述
测试代码实例:

#include<iostream>
#include<stdlib.h>
#include<opencv2/opencv.hpp>

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

int main()
{
	Mat demo;
	VideoCapture capture(0);
	while (1) {
		capture >> demo;
		imshow("demoWindow", demo);
		waitKey(1);
	}
	system("pause");  // 暂停
	return 0;
}

运行结果(涂鸦警告):

在这里插入图片描述

4. 一些可能的错误

① CMake 点击 Configuration 出现一些包或库等文件没有成功下载。

  • 多次点击 Configuration 直到成功;
  • 搭梯子手动下载需要的包后放到对应路径下,下载内容,链接和路径在 E:\opencv\cudabuild\CMakeDownloadLog.txt 里可以查看;
  • 点击链接直接下载并放到对应路径下。

② Cmake 编译的时候找不到 cuda 或者 cudnn,或者找到的版本不对。

  • 在 cmd 里用命令 nvcc -version 查看当前的 cuda 版本是否正确,如果 cuda 已经确实安装成功,那么大多是
    环境变量的问题;
  • 查看环境变量里应用的版本是否是期望的版本,不是的话进行修改。
  • 重新卸载安装 cuda。

③ VS2017 测试时找不到 opencv_world410d.lib,kernel32.lib 等库。

  • 确认已经在链接器 → 输入 → 附加依赖项里添加 opencv_world410d.lib;
  • kernel32.lib 在路径 C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64 下,将其添加在 VC++ 目录 → 库目录里;
  • 在 VC++ 目录 → 库目录 → 下拉中选择从父级或项目默认设置继承。
  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听 风、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值