跳到主要内容

编译带 CUDA 模块的 OpenCV

3 分钟阅读

概述

众所周知,OpenCV 自带预编译的安装包,可是这个预编译的 OpenCV 不能很好地调用 GPU 进行运算,这导致了运行速度总是不尽人意。如果想要 OpenCV 更好地调用 GPU ,这需要在编译 OpenCV 的过程中添加对 CUDA 的支持。

因为CUDA 模块在 opencv_contrib 包中,所以在编译时还需要附带上与 opencv 版本一致的 opencv_contrib 源代码。

开始

需要的工具

  1. CMake
  2. Visual Studio
  3. CUDA
  4. CUDA Toolkit
  5. OpenCV 源代码
  6. opencv_contrib 源代码

具体步骤

  1. 首先需要把 OpenCV 和 opencv_contrib 的源代码解压在一个不包含中文和空格路径的文件夹内。

  2. 打开 CMake 把解压后 OpenCV 源代码的路径填在 Where is the source code 选项中。在 Where to build the binaries 选项中填入要生成二进制文件的路径,这里推荐在解压源代码的根目录创建一个 "build" 文件夹来作为生成目录。

  3. 接着点击 Configure 按钮,这时候会弹出一个选项框,这里选择你当前安装的Visual Studio 的版本,然后选择x64,选择完后点击Finish

  4. 接着CMake就会开始第一次源码的配置,这个过程可能会比较慢,这是因为有一些文件需要从外部服务器下载,而这些文件国内的网络可能无法访问,你可以自行下载对应的文件并且在源代码根目录的 .cache 文件夹内自行替换。

  5. 如果下方日志打印出 Configuring done ,则代表第一次配置完成,接着我们在 CMake 的配置框中勾选:

    • BUILD_CUDA_STUBS
    • OPENCV_DNN_CUDA
    • WITH_CUDA
    • BUILD_opencv_world
  6. 这四个选项,接着在 OPENCV_EXTRA_MODULES_PATH 中填入 opencv_contrib 源代码根目录文件夹 modules 的路径 。如果不需要的话,python 和 java 的绑定也可以取消勾选

  7. 再次点击 Configure 按钮开始第二次配置,等配置完成后,在配置中找到 CUDA_ARCH_BIN 的选项在里面填入你当前电脑显卡的计算系数。

    可以在这里找到对应显卡的算力:Nvidia显卡算力表

    注意一定只选择你当前显卡的算力,不要填写多个,否则等到了编译阶段,它会把每个架构都编译一遍。

  8. 等上述步骤都做完后就可以点击 Generate 按钮生成可以编译的文件,等生成完成后就可以点击 Open Project 按钮进入 Visual Studio 开始最终的编译阶段了。

  9. 在 Visual Studio 中,先将上方的 Debug 下拉框选为 Release ,接着在右侧资源管理器中找到 CMakeTargets 文件夹中的 ALL_BUILD,对其右键点击生成。等漫长的生成结束后在对着 INSTALL 右键选择“仅用于项目”——“仅生成INSTALL”。

  10. 等待编译结束后,编译好的文件就在 build 文件夹的 install 文件夹中。

评论
0条评论

添加新评论

昵称
邮箱
网址