在windows11上编译opencv使用cuda加速

您所在的位置:网站首页 mysql如何测试安装成功了没 在windows11上编译opencv使用cuda加速

在windows11上编译opencv使用cuda加速

2023-04-15 00:56| 来源: 网络整理| 查看: 265

1. 环境、软件准备

本次编译环境是在windows11上使用VS2022+Cmake-gui进行编译的。同时,由于我本机有多个python环境,因此采用的anaconda管理python环境,opencv编译以后也是安装于anaconda中。

1.1 环境准备

一定确保已经成功安装了cuda工具包,以及VS编译器,清单如下:

cuda工具包visual studio 编译器cmake-gui构建工具opencv源码opencv-contrib源码

cuda及cudnn环境安装

源码下载

Opencv与Opencv-contrib的版本应保持一致。

Opencv 源码下载:

Opencv-contrib 源码下载:

1.2 软件安装

visual studio 2022下载安装

cmake-gui 下载安装

cmake-GUI构建工程

以管理员打开cmake-gui,如果不是管理员打开,可能会没有权限创建文件。

启动cmake-gui

设置opencv源码位置,如果是编译至anaconda中的虚拟环境中,需要提前设置anaconda虚拟环境中的python路径。执行此步骤是为了将CUDA版本的opencv安装到虚拟环境中,只安装到宿主机环境不需要执行此步骤。where to build the binaries 处需要填写的build完成的文件的保存文件,可以放在opencv源码文件夹中。

cmake-gui中需要设置的参数,图中红线位置。点击Add Entry按键可以获得弹窗设置python路径。

设置完以后,第一次点击configure需要设置所使用的visual studio版本以及平台,64位请选择x64.

选择visual studio版本以及平台

编译过程需要下载各种依赖,可能会因为网络问题会卡住。

上一步完成后,在Search框内输入CUDA和fast,勾选三个配置 : WITH_CUDA 、OPENCV_DNN_CUDA、ENABLE_FAST_MATH 。

Search框搜world,将build_opencv_world打勾,将所有opencv的库都编译在一起不需要自己一一添加每个小模块。

Search框搜BUILD,勾选BUILD_opencv_python3

search框搜MODULES,在OPENCV_EXTRA_MODULES_RATH一项,添加opencv_contrib中的modules路径

search框搜NON,把OPENCV_ENABLE_NONFREE 打勾

如果不需要java、js等支持,可以搜索并取出勾选,可取除test相关选项,加快编译速度。

第二次点击configure,等待下方日志显示configure done

搜索框输入cuda,勾选CUDA_FAST_MATH ,CUDA_ARCH_BIN中将显卡的算力内容改成自己显卡的算力,对应算力与显卡型号如第一章图片所示,如,显卡型号为 RTX 3070所对应的算力为8.6,则删除其他的算力版本,仅保留8.6即可.

通过下面的链接可以查看显卡算力:

CUDA-Enabled GeForce and TITAN Products

再次点击configure,这次的Configuring done终于OK,然后点击Generate,稍等片刻出现Generating done!

点击Open Project,它会启动你的Visual Studio。但是在我的电脑上有多个版本的Visual Studio,直接点击这个会打开2017版本的,因此可以去build文件下 右键点击 OpenCV.sln 选择对应的Visual Studio版本打开。

Visual Studio 编译opencv

设置build版本以及平台,我设置的为release版本,平台为x64.

Debug是用于开发和测试的配置。它包含了更多的调试信息,可以让开发人员快速定位和修复代码错误。在使用Debug配置时,编译器将生成一个可执行文件和一些辅助文件,以便在运行程序时进行调试。相反,Release是用于生产环境的配置。它会对代码进行优化,去除Debug信息,并且会进行更加细致的优化以获得更

然后点击”build solution“开始编译。

这个编译会需要几十分钟,而后点击CMakeTargets下的install再次编译,这一次会把opencv编译安装至anaconda的环境中。

测试import cv2 as cv print(cv.cuda.getCudaEnabledDeviceCount())

如果打印的数字大于0,则编译成功。

参考资料

opencv-python使用GPU资源--虚拟环境安装与编译opencv源码_opencv gpu python_lujx_1024的博客-CSDN博客

cmake 编译opencv4.5.5/opencv4.6.0/opencv4.7.0 gpu版以及vs2022配置opencv-gpu

windows上编译opencv使用cuda加速dnn模型推理_乐观的文神的博客-CSDN博客



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3