新手友好 win10使用cmake3.17编译配置OpenCV3.4.1+CUDA10.2+VS2019

为了试试GPU能不能使数字识别的纯算法代码加速,而去配置了OpenCV+CUDA的环境。作为一个小白,配置过程中遇到了不少报错,从暴躁,到无奈,到葛优瘫式认命望天。感谢前人分享的经验,在他们的基础上,我也想把自己的配置过程、遇到的问题和原因猜测分享给大家。同时,欢迎大家进行补充,如果有不正确的地方,也请多指教。

前提环境:
Win10
VS2019
OpenCV3.4.1
CUDA10.2
CMake 3.17.0

下面进入配置过程的分享,我把核心步骤的字体都加粗了——如果赶时间的话,可以只看大标题和加粗部分。

一、安装TBB

说是安装,其实就是下载TBB库压缩包并解压
在系统环境变量中加入:
tbb2019_20190605oss_win\tbb2019_20190605oss\bin\intel64\vc14

暂时不明白为什么一定要装TBB,有些经验分享上说TBB是用于编译OpenCV core的。

我进行过以下3种尝试:
1、不安装TBB,直接进行OpenCV+CUDA的CMake编译。
结局:能够成功CMake编译,但是在VS install生成时失败。
在这里插入图片描述
在这里插入图片描述
2、安装2020年更新的TBB库
结局:CMake在生成过程中报错。猜测原因可能是因为TBB版本太新,3.17.0版本的CMake没来得及兼容?

在这里插入图片描述
3、安装2019版本TBB(tbb2019_20190605oss_win )
结局:成功编译。

综上所述,推荐大家安装比CMake老半年以上的TBB库。(比如如果CMake是2020年1月更新的版本,那就安装2019年6月以前更新的TBB库)。

二、进行CMake编译

打开cmake-gui.exe(在bin文件夹中):
在这里插入图片描述
在“Where is the source code”处输入OpenCV sources文件夹的路径(…\opencv3.4.1\opencv\sources),
在“Where to build the binaries”处输入用于存放cmake编译后文件的路径,
勾选“Grouped”和“Advanced”
在这里插入图片描述
因为我的opencv库文件夹的路径中有中文,我担心cmake时可能会出错,所以就把sources文件夹复制到了全英文路径中。
猜测下面这个报错是因为那次cmake编译时,source code路径带有中文:
在这里插入图片描述
点击左下角的“Configure”:
在这里插入图片描述
等待10分钟左右,会出现一片红,红色的是未更新的配置:
在这里插入图片描述

在默认勾选的基础上,增加“with CUDA”、“with TBB”的勾选,然后再次点击"Configure"进行更新在这里插入图片描述在这里插入图片描述
更新后,会显示TBB对应路径"NOTFOUND",我们需要自行输入TBB对应路径:
在这里插入图片描述TBB_ENV_INCLUDE:
…/tbb2019_20190605oss_win/tbb2019_20190605oss/include
TBB_ENV_LIB:
…/tbb2019_20190605oss_win/tbb2019_20190605oss/lib/intel64/vc14/tbb.lib
TBB_ENV_LIB_DEBUG:
…/tbb2019_20190605oss_win/tbb2019_20190605oss/lib/intel64/vc14/tbb_debug.lib

然后点击"Configure",会自动匹配TBB_VER_FILE的路径:
…/tbb2019_20190605oss_win/tbb2019_20190605oss/include/tbb/tbb_stddef.h
再次点击"Configure".

等到没有红色,并显示"Configuring done"时,就可以点击"Generate"
等到显示“Generating done”后,就可以关闭CMake窗口了。

三、在VS中生成

在自定义生成路径下打开OpenCV.sln
在这里插入图片描述
(可以跳过的步骤)根据前人经验,可以先尝试生成modules下的opencv_core,如果报错了,就说明CMake编译有问题,得重头再来。这样可以减少在漫长等待之后迎来一堆报错的概率,节约试错时间:
在这里插入图片描述
在CMakeTargets下选中INSTALL,右键“生成”
在这里插入图片描述
生成过程可能需要等待3-5个小时。如果有360杀毒的话,建议暂时关掉——不然在生成后期,它老跳出来“关键位置篡改”的提醒。

生成成功后,点击“全部忽略”,关掉OpenCV.sln:
在这里插入图片描述

四、在新建项目中配置属性、测试能否正常运行

在系统环境变量中加入
…\CUDACV341TBB(CMake编译的自定义生成路径)\install\bin

新建一个sln项目,点击菜单栏中的"项目-属性",出现:
在这里插入图片描述
在"配置属性 - VC++目录 - 包含目录"中加入
…\CUDACV341TBB\install\include
在"VC++目录 - 库目录"中加入
…\CUDACV341TBB\install\lib
在"链接器 - 输入 - 附加依赖项"中加入…\CUDACV341TBB\install\lib路径下的一大串.lib文件名。

一个个复制文件名很耗时间,我们可以进入lib文件夹,新建一个txt文件,输入:
DIR ./B>LIST.TXT
保存后,将文件名后缀从.txt改为.bat:
在这里插入图片描述
双击这个.bat文件后,lib文件夹下会出现一个"LIST.TXT"的文本文档:
在这里插入图片描述
然后我们就可以把里面的.lib文件名复制出来,粘贴到"链接器 - 输入 - 附加依赖项"中。

配置完成后,将OpenCV自带例子gpu-basics-similarity.cpp的内容复制进去。
(例子具体路径:\opencv3.4.1\opencv\sources\samples\cpp\tutorial_code\gpu\gpu-basics-similarity)

生成项目后,在.exe文件所在目录中,存入2张分别名为"1.jpg"、"2.jpg"的图片。
打开command,进入.exe文件所在目录,输入命令:
GPUnum.exe 1.jpg 2.jpg 10
(即:“.exe的文件名+空格+图片1的文件名+空格+图片2的文件名+空格+10”)
如下图一样显示结果,说明成功:
在这里插入图片描述
祝大家都能一次配置成功!

参考文献:
Win10 下Cmake编译配置 Opencv3.1 + Cuda7.5 + VS2013
Win10下Cmake编译配置Opencv3.4+Cuda8.0+vs2013

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值