windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程


————————————————————————————————————

前言

这篇文章将会演示windows下详细的用VS2019+CUDA10.1+tensorflow2.0+tbb+opencv4.2.0(gpu——with_cuda)环境的配置全过程。如果按本文讲到的避坑方式做的话,应该是可以成功配置的,本文的配置顺序也是个人踩坑多年觉得最合适的路线,所以话不多说,直接开始。

准备

–> 全过程会很久,做好心理准备

注意:在全部配置过程之前,一定要确保环境是干净的(即下面要用到的工具没安装过,如果有一定要卸载干净,包括环境变量、注册表等)。

–> Tools:

  1. Anaconda3(python3.7)下载地址
  2. Visual Studio 2019下载地址
  3. CUDA10.1下载地址
  4. tensorflow2.0下载链接
  5. tbb下载地址
  6. cmake16下载地址
  7. opencv-4.2.0 + opencv-conrtib-4.2.0opencv下载地址 opencv-contrib下载地址

环境配置

1. Anaconda3

这个的安装过程就不详细讲了,因为没有太重要的点。下载好64位的exe文件后,双击打开按提示安装就好了,很简单。
ps:最后有一步有两个选项的(已安装好没截图了),第一个选项是是否添加环境变量,选上可以不用手动添加环境变量,第二个选项是python是否会被其他用到python的软件检测到,如果安装anaconda之前已经安装过python,可以不点,不然就要选上。
环境变量:
anaconda3的环境变量

2. Visual Studio 2019

这个的安装依旧不讲解,官网下载就好了,但是这里要求版本要 2019.3 以上,因为是要和后面的tensorflow.whl文件匹配下。
注意:如果没有 Microsoft Visual C++ Redistributable for Visual Studio 2019 的话 也要下载安装(exe文件,双击安装就行), 否则会出现下面的错误,安装好后就不会有这样的错误了,当然也有可能是cuda版本不对(这里应该是10.1)或cuda没安装的原因.

ImportError: DLL load failed: 找不到指定的模块。

Failed to load the native TensorFlow runtime.

下面是环境变量的添加(3个),可能不需要,但添加上应该没什么坏处吧:
VS2019的环境变量

3. CUDA10.1

这里稍微讲下cuda:
① VS2019支持cuda10.1/cuda10.2,但是VS2017支持的最高版本为cuda10.0。
TensorFlow2.0官方是只支持CUDA10.0(直接pip install tensorflow安装的话就要注意选用CUDA10.0版本了)的,但是这里选的CUDA10.1是因为下面安装的tf是大神从源码编译的,是只支持CUDA10.1(我安装的时候还不支持10.2)的,如果是安装其他的tf版本,也可以看看大神的github里的说明再选配置。

----> 安装:

(1)同意协议,选自定义安装
在这里插入图片描述
如果已经有比cuda10.1更新的显卡driver驱动,就把下面三个选项去掉,只选第一个就行。
在这里插入图片描述
安装路径,可以默认C盘,也可以自定义,然后下一步就开始安装了
在这里插入图片描述
后面就下一步或关闭就可以完成安装了。
注意:安装完之后,可以添加cudnn库,下载对应版本,解压,然后把里面的文件复制到CUDA的安装目录下就可以了。
下面是环境变量的设置
① 如下图,绿色框框中的是安装完之后默认就添加的,红色框里的自己添加到系统变量中设置为变量, 注意下面的CUDA_SDK其实就是NVCUDASAMPLES_ROOT,一样的,自己仔细看看,最好不要直接复制。
在这里插入图片描述
② 在 系统变量-path 中添加如下内容:
在这里插入图片描述

—> 测试

打开samples目录,如 F:\NVIDIA GPU Computing Toolkit\CUDA Samples\v10.1, 双击打开Samples_vs2019.sln,第一次打开导入项目会比较久, 耐心等待一下,打开之后右键 1_Utilities 生成/重新生成
在这里插入图片描述
成功生成后是下面这样的,这里也可能会报错:如果是 could not set up environment for …(balabalabala什么的),那就是环境问题,仔细查看自己的cuda环境变量是否正确,再次强调环境真的很重要。
在这里插入图片描述
然后终端/shell进入这个目录中的bin文件夹,里面有个debug和release,生成时选的是哪个,就进入哪个目录,然后执行deviceQuery.exe和bandwidthTest.exe,看图操作,出现图中的结果就说明安装成功了, samples里面还有其他的例子,同理生成可测试。
在这里插入图片描述
在这里插入图片描述

4. tensorflow2.0

在安装tensorflow之前先检查下下面这些是否已经具备:
-> Visual Studio 2019.3或以上
-> Microsoft Visual C++ Redistributable for Visual Studio 2019
-> CUDA 10.1
-> 对应CUDA版本的cudnn
-> python3.7

前面的都弄好了之后就很简单了,在shell里cd进入下载好的whl文件目录,pip install <filename.whl>就好了,如下面演示:

# 进入whl文件下载的目录
cd F:\SetupFiles\tensorflow 2.0

# pip 安装cpu版的或者gpu版的
# pip install tensorflow-2.0.0-cp37-cp37m-win_amd64.whl
pip install tensorflow_gpu-2.0.0-cp37-cp37m-win_amd64.whl

注意:第一次执行tensorflow时,需要等待一段时间用于编译初始化

测试是否安装成功:

# 这里在shell中进入ipython测试
import tensorflow as tf
tf.test.is_built_with_cuda()
tf.test.is_gpu_available()

5. tbb (Threading Building Blocks)

一个用于并行进程的C++库,官方介绍:
Intel® Threading Building Blocks (Intel® TBB) is a widely used C++ library for shared memory parallel programming and heterogeneous computing (intra-node distributed memory programming). The library provides a wide range of features for parallel programming that include:
· Generic parallel algorithms
· Concurrent containers
· A scalable memory allocator
· Work-stealing task scheduler
· Low-level synchronization primitives
Use this library-only solution for task-based parallelism. It does not require any special compiler support and has ports to multiple architectures that include Intel® architectures and Arm*.

安装文件是个压缩文件,解压后设置一下环境变量就可以了:
tbb的环境变量

6. cmake16

进入下载地址,下载64位的msi文件,双击安装即可,自动添加环境变量。

7. opencv4.2.0(with_cuda)

注意:如果不需要支持cuda的opencv(一般是没有gpu的情况下),在cmake中(下面操作对应部分)取消勾选with_cuda即可。

下面进入需要编译三四个小时的gpu加速的opencv配置过程。。。。。。
(Linux其实是同样的编译过程的,如果没有install cmake-gui,那就用命令参数的方式选择,如果有GUI就同下)

–> 第一次configure

首先,打开cmake,添加源码目录,和需要存放build生成的文件的目录。
在这里插入图片描述
点击configure后需要选择编译器,也就是VS2019 x64了,点finish之后就开始第一次configure了。
在这里插入图片描述
第一次configure done之后,是一片红的,然后勾选下表中的的选项,勾选完之后点击configure。
(注意:如果configure的时间很长,且有红色信息输出,多半是ippicv、ffmpeg等文件下载不成功,解决办法请参考:传送门

必选项value
WITH_CUDATrue
WITH_TBBTrue
OPENCV_EXTRA_MODULES_PATHF:/opencv_4.2.0/opencv_contrib-master/modules
OPENCV_ENABLE_NONFREETrue
可选项value
BUILD_DOCSTrue
BUILD_EXAMPLESTrue
INSTALL_C_EXAMPLESTrue
INSTALL_PYTHON_EXAMPLESTrue
BUILD_opencv_worldTrue

(BUILD_opencv_world选项的作用是将所有lib文件融合为一个world.lib文件,我没选,个人觉得不同的模块都有对应名字的lib,这样比较好管理,出错也好排查)

–> 第二次configure

configure done之后,手动填入tbb的路径,如下。
在这里插入图片描述
然后选一下cuda的computing capacity(好像这么叫的), 如下,例如我这里 RTX2080对应的就是7.5,设置完之后再次点击configure。
无需设置上面这个computing capacity,直接检查其他无误之后点击configure就可以了。

–> 第三次configure

这次就只有一个红色选项了,就是 TBB_VER_FILE,value是文件路径,一般自动填入的,检查一下有没有错误,没有就再次点击configure。
在这里插入图片描述

–> generate

configure done之后,可以往上翻一翻,看看configure的信息是否正确,如果没有问题就点击左下方的第二个选项 Generate,生成之后输出 Generating done,到这里就完成了cmake的使命了,点击 Open Project 选项直接打开 OpenCV.sln项目了(如果没有点这个选项关闭了cmake,也可以在build目录下找到这个文件打开)。
在这里插入图片描述

–> VS2019——build&install

打开 OpenCV.sln 之后,先找到 解决方案资源管理器-modules-opencv_core/opencv_cudacodec,先分别右键点击这两项生成,看看有没有什么错误,如果这两个可以生成,并不报错,那就是基本成功的了。
在这里插入图片描述
基本上是最后一步了:点击菜单栏 生成-批生成选中All_BUILD跟INSTALL,点击重新生成,就是漫长的等待编译完成的娱乐时间了。
在这里插入图片描述
在这里插入图片描述

–> 完成

出现下面这图时,说明编译已经成功完成了。整个编译过程有很多很多的警告(C4819),是因为编译 ANSI 源文件上使用不能表示文件中的所有字符的代码页的系统时,所以出现 C4819。不用理会,不影响结果,只有没有error就没问题。
ps:编译过程中也有可能错误: 无法打开 python37_d.lib, 需要简单修改一下pyconfig.h文件,具体操作:解决办法

在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要基于 Android 的 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 进行编译,可以按照以下步骤进行: 1. 下载 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 的源代码: ``` git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.0.1 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout 4.0.1 ``` 2. 安装 Android NDK 和 Android SDK,并设置相应的环境变量。 3. 在 opencv 目录下创建一个 build 目录,并进入该目录: ``` mkdir build cd build ``` 4. 运行以下命令,生成 OpenCV Android 库: ``` cmake -DANDROID_ABI=armeabi-v7a \ -DANDROID_PLATFORM=android-21 \ -DANDROID_TOOLCHAIN=clang \ -DANDROID_STL=c++_static \ -DWITH_OPENCL=OFF \ -DWITH_IPP=OFF \ -DWITH_TBB=OFF \ -DWITH_MATLAB=OFF \ -DWITH_CUDA=OFF \ -DWITH_GTK=OFF \ -DBUILD_opencv_apps=OFF \ -DBUILD_ANDROID_EXAMPLES=OFF \ -DBUILD_ANDROID_PROJECTS=OFF \ -DBUILD_DOCS=OFF \ -DBUILD_EXAMPLES=OFF \ -DBUILD_PACKAGE=OFF \ -DBUILD_PERF_TESTS=OFF \ -DBUILD_TESTS=OFF \ -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=../../android.toolchain.cmake \ ../ ``` 其中,`ANDROID_ABI` 表示 Android 平台架构,这里设置为 `armeabi-v7a`,表示 ARMv7 架构;`ANDROID_PLATFORM` 表示 Android 平台版本,这里设置为 `android-21`;`ANDROID_TOOLCHAIN` 表示使用的工具链,这里设置为 `clang`;`ANDROID_STL` 表示使用的 C++ 标准库,这里设置为 `c++_static`,表示静态链接;`WITH_OPENCL`、`WITH_IPP`、`WITH_TBB`、`WITH_MATLAB`、`WITH_CUDA`、`WITH_GTK` 分别表示是否启用 OpenCL、IPP、TBB、MATLAB、CUDA、GTK 等功能,这里都设置为 `OFF`;`BUILD_opencv_apps`、`BUILD_ANDROID_EXAMPLES`、`BUILD_ANDROID_PROJECTS`、`BUILD_DOCS`、`BUILD_EXAMPLES`、`BUILD_PACKAGE`、`BUILD_PERF_TESTS`、`BUILD_TESTS` 分别表示是否编译 OpenCV 应用程序、Android 示例、Android 项目、文档、示例、打包、性能测试、测试,这里都设置为 `OFF`;`OPENCV_EXTRA_MODULES_PATH` 表示 OpenCV Contrib 目录的路径;`CMAKE_BUILD_TYPE` 表示编译类型,这里设置为 `Release`;`CMAKE_TOOLCHAIN_FILE` 表示使用的交叉编译工具链文件。 5. 运行以下命令,编译生成 OpenCV Android 库: ``` make -j4 ``` 其中,`-j4` 表示使用 4 个核心进行编译。 6. 在 build 目录下会生成一个 `sdk` 目录,其中包含编译好的 OpenCV Android 库。 可以将该库导入到 Android Studio 中,然后在项目中使用该库提供的函数进行开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值