从OpenCV4.2.0 版本开始允许使用 Nvidia GPU 来加速推理。

本文介绍使用windows11系统编译带CUDA的OpenCV的过程。

1. 准备环境

  1. 下载OpenCV源码

  2. 下载Opencv contrib (下载对应的版本)

  3. 准备.cache文件,拷贝到source文件下;或者修改contrib中Cmake文本中的github下载地址。

  4. 安装Visual Studio 2022(随便版本都行,但最好2019以上)

  5. VS安装步骤中选择(Desktop Development with C++ option and click on install)

  6. 安装CUDA和cuDNN(需确认安装完成,并把zlib库添加到系统环境变量path中)

  7. 安装Cmake

2. 编译

  1. 解压在penCV源码,在source目录旁新建编译目录

  2. 解压OpenCV_contrib,放在source文件夹旁边

  3. 打开Cmake(gui)

  4. Cmake配置Opencv源码文件地址,和build输出文件地址

  5. 点击configure

  6. 出现配置界面,第一行选择VS相应的版本,第二行选择架构默认(x64)

  7. 点击finish,第二次点击configure

  8. 如果这时输出下载超时,需要替换准备好的.cache文件或者修改下载地址为国内镜像网站

  9. 在search中输入cuda,出现的三个选项全部打勾

  1. search框搜MODULES,在OPENCV_EXTRA_MODULES_RATH一项,添加opencv_contrib4.5.1中的modules目录

  2. search框搜NON,把OPENCV_ENABLE_NONFREE 的value打勾。

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

如果你的电脑配置一般,我建议你找到列表中的“BUILD_TESTS”,“BUILD_PERF_TESTS”,“BUILD_EXAMPLES”,把勾去掉,可以缩短最后生成解决方案的时间。电脑还可以的朋友建议保留。

  1. 第三次点击configure,再次等待,会出现Configuring done 再次搜索框输入cuda,CUDA_ARCH_BIN中将显卡的算力内容改成自己显卡的算力.显卡算力查询网站

  2. 第四次点击confige,这次的Configuring done终于OK,然后点击Generate,稍等片刻出现Generating done!

  3. 然后点击Open Project,它会启动你的Visual Studio

  4. VS选择Release x64,接着找到“CmakeTargets”下的“ALL_BUILD”,右键→“生成”,然后开始漫长的等待……

  5. 解决方案资源管理器—>CMakeTargets—>INSTALL—>生成”然后又是等,好在这次时间很短。完成后你的build文件夹中会出现一个install文件夹,这就是完成了。