win10使用vs2019从源码编译OpenCV4.5+cuda10.2+cudnn8.0的C++环境和Python环境

1 环境准备

1 vs2019
2 anaconda+Python3.6+numpy
3 cuda和cudnn环境
4 cmake
5 OpenCV4.5.0以及OpenCV-contrib4.5.0压缩包
本人电脑里的cuda和cudnn环境如下:
在这里插入图片描述
当然Python环境可以不用anaconda,自己去下载Python3.6安装,然后装上numpy模块,因为Python版本的OpenCV依赖于numpy。如果用户仅仅需要编译C++版本的OpenCV,可以去掉Python环境。

2 cmake编译

将下载的OpenCV两个压缩包解压

在这里插入图片描述
进入OpenCV4.5.0目录下,新建一个文件夹build,作为cmake编译文件存放目录。
打开cmake,目录选择如下:
在这里插入图片描述
然后点击configure
在这里插入图片描述
点击完成
等待configure完成,在这个界面中进行如下更改:
将build_java勾选取消、build_tests勾选取消、with vtk勾选取消
勾选上这个OPENCV_ENABLE_NONFREE
在这里插入图片描述
勾选BUILD_opencv_world
在这里插入图片描述

在这里插入图片描述

然后添加contrib的目录:

在这里插入图片描述
以上几个选项就是C++编译环境的设置,如果用户不需要编译Python版本,就可以到这一步。
接下来设置Python版本OpenCV的生成
对于cmake界面中有些选项如果没有的话,需要手动添加Add Entry
新建BUILD_opencv_python3以及BUILD_opencv_python2
一个为true一个为false
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后根据自己的anaconda中Python和numpy的路径来进行如下配置:
在这里插入图片描述

python.exe所在路径:
PYTHON3_EXECUTABLE=G:/install/conda/envs/python368/python.exe
头文件目录:
PYTHON3_INCLUDE_DIR=G:/install/conda/envs/python368/include
Python的lib文件路径:
PYTHON3_LIBRARY=G:/install/conda/envs/python368/libs/python36.lib
numpy模块中头文件目录:
PYTHON3_NUMPY_INCLUDE_DIRS=G:/install/conda/envs/python368/Lib/site-packages/numpy/core/include
Python第三方模块所在目录:
PYTHON3_PACKAGES_PATH=G:/install/conda/envs/python368/Lib/site-packages

到这一步Python的环境就配置好了,接下来配置GPU环境:
勾选上WITH_CUDA
在这里插入图片描述
由于没有WITH_CUDNN,因此就手动添加

在这里插入图片描述

然后点击configure
这一次configure 完成后
在这里插入图片描述

上面还有一些红色选项需要我们再次确认,因此接着再点击一次configure
这一次完成后所有选项全部变白了
在这里插入图片描述
然后我们点击生成generate
等待生成完成

vs2019编译

在点击generate生成完成后,我们使用vs2019打开这个工程
由于本人需要的是release版本的,因此将debug改为release

在这里插入图片描述
打开了工程后我们先不要急于生成,先单独运行这两个工程看看是否会成功

在这里插入图片描述
在我的电脑里运行时提示这个错误:unsupported Microsoft Visual Studio version!
在这里插入图片描述
这个是cuda的头文件不支持vs2019这么高的版本,我们打开提示错误的这个host_config.h文件,找到这个地方
在这里插入图片描述
因为1920对应的就是vs2017,vs2019的数字大于这个,所有就报错,解决办法是把这个1920改大些,这里我改成2000
在这里插入图片描述
接下来可以右键ALL_BUILD->生成

在这里插入图片描述
生成成功然后就可以右键Install 生成动态库和头文件
至此GPU版本的OpenCV编译完成。
那么这个Python版本的OpenCV是否已经安装了,实际上在点击install进行生成的时候,就已经把Python版本的OpenCV模块安装到Python环境中去了。
在这里插入图片描述
不过通过这种方式安装的Python版OpenCV通过pip list却无法显示出来,因为这个命令只能显示通过pip安装的模块,但是却是可以使用的。
在这里插入图片描述
OpenCV4.5的C++GPU库编译好了,接下来在vs2019中调用测试下看GPU库是否可以使用:
C++测试代码如下:

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

int main(int argc, char* argv[])
{
    cv::cuda::GpuMat img(400, 600, CV_8UC3, cv::Scalar(255, 0, 0));
    cv::Mat cpuImg;
    img.download(cpuImg);
    cv::imshow("test", cpuImg);
    cv::waitKey(0);
    return 0;
}

运行成功,代表OpenCV环境编译正确。
在这里插入图片描述

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
### 回答1: OpenCV是一个开源的计算机视觉和机器学习库,可以方便地处理图像和视频。而CUDA(Compute Unified Device Architecture)是由NVIDIA开发的一种并行计算架构,可以加速图形处理器(GPU)上的计算任务。 OpenCV 4.5.1是OpenCV的一个版本,它提供了丰富的功能和算法,用于图像和视频处理、特征提取、目标检测等任务。这个版本可以在Windows 10操作系统上使用,并且可以与Visual Studio 2017集成,提供开发环境和调试工具。 CUDA 10.0是NVIDIA的一个版本,它支持NVIDIA GPU上的并行计算任务。它允许开发人员使用C语言、C++CUDA自己的扩展语言编写并行计算代码,以加速计算密集型任务。例如,在图像处理,可以使用CUDA加速OpenCV算法,从而提高计算性能。 而cuDNNCUDA Deep Neural Network library)是NVIDIA专门为深度学习任务开发的一个库。它提供了一组高性能的深度神经网络的基本操作和优化算法,可以与CUDAOpenCV结合使用。 综上所述,OpenCV 4.5.1可以与CUDA 10.0和cuDNN 7.6.0集成使用。开发者可以在Visual Studio 2017使用这些工具和库进行图像处理和机器学习任务的开发和优化。通过使用CUDA加速,可以提高计算性能,而cuDNN可以提供深度学习任务所需的算法和操作。 ### 回答2: OpenCV 4.5.1是一个计算机视觉库,用于在计算机视觉和机器学习项目进行图像和视频处理。VS2017是一个集成开发环境(IDE),用于Windows操作系统上的软件开发。CUDA(Compute Unified Device Architecture)是一个用于GPU计算的并行计算平台和API模型。CUDNN是NVIDIA深度神经网络库,用于在GPU加速深度学习任务。 在Windows 10上使用VS2017来编译OpenCV 4.5.1,并在CUDA 10.0和CUDNN 7.6.0的支持下进行构建可以提供更好的计算性能和加速CUDA 10.0提供了与CUDA架构和驱动程序的兼容性,并支持许多NVIDIA GPUCUDNN 7.6.0是基于CUDA的深度神经网络库,可以加速深度学习任务的训练和推理。 使用VS2017编译OpenCV可以让开发者方便地在Windows平台上进行开发和调试。VS2017提供了强大的集成开发环境,它可以帮助开发者编写、调试和测试程序。通过配置CUDA 10.0和CUDNN 7.6.0来支持OpenCVGPU加速,可以进一步提高图像和视频处理的速度和效率。 总结来说,使用OpenCV 4.5.1、VS2017、Windows 10、CUDA 10.0和CUDNN 7.6.0可以实现在Windows平台上的高效计算机视觉和机器学习开发。这种配置可以提供更好的性能和加速,特别是在需要处理大量图像和视频、进行深度学习任务的情况下。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Keras深度学习

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

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

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

打赏作者

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

抵扣说明:

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

余额充值