当前位置: 代码迷 >> 综合 >> win10使用vs2019从源码编译OpenCV4.5+cuda10.2+cudnn8.0的C++环境和Python环境
  详细解决方案

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

热度:10   发布时间:2023-11-24 19:27:06.0

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环境编译正确。
在这里插入图片描述