既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
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++ 目录 → 库目录 → 下拉中选择从父级或项目默认设置继承。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
066)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!