OpenCV cuda 版本编译使用
1. 说明
opencv 默认提供的动态链接库是不支持 cuda 加速的。需要我们自己编译。
本文记录一下编译 opencv cuda 版本的流程,并同步在个人站点。
2. 准备工具
OpenCV cuda 版本的编译需要各种工具版本相互配合。建议选择新版本的 OpenCV 和 CMake。
CMake 3.18
CUDA Toolkit 11
VIstual Studio 2022
OpenCV 3.4.15 & OpenCV_contrib
3. 编译流程
3.1 CUDA
安装 CUDA11 和 对应的 CUDNN,并配置环境变量。过程和配置 tensorflow gpu 版本相同。
3.2 CMake
将OpenCV_contrib 3.4.15 和 OpenCV 3.4.15 分别解压到某处。打开 CMake-gui 设置源码目录和目标目录。点击“Configure”按钮。
打开 CMake-gui 工具,填入 OpenCV 解压的源码目录和 build 目录。点击 configure,

生成的选项中,勾选/取消勾选相关内容:
打开 WITH_TBB
勾选和 CUDA 相关选项

取消选择 java 和 python 的编译选项(个人不需要)
勾选 nonfree 的编译选项
取消 TEST 相关选项加快编译速度
勾选 BUILD_opencv_world 最终只生成一个动态链接库方便使用
在 OPENCV_EXTRA_MODULES_PATH 中填入 OpenCV_contrib 解压文件夹 modules 的路径

取消选择 OPENCV_GENERATE_SETUPVARS
再次点击 configure 按钮,由于网络问题会出现无法下载的错误,可以取消勾选 face 模块,然后再次点击 configure 按钮。要保证生成 CMakeLists.txt 过程中不出现红色警告,不然后续的编译过程会出现错误。无错误后点击 Generate 按钮,生成项目文件 Opencv.sln 。
3.3 VS2022
打开生成的 OpenCV.sln 文件,找到项目 ALL_BUILD,分别在 Debug 和 Release 下右击生成。编译大概需要六个小时(等死个人)。
ALL_BUILD 完成后,找到项目 INSTALL 右击生成。最终会在当前 build 目录下生成一个 install 目录,这就是我们需要的可执行文件和库,最后添加到环境变量中测试效果。
也可以使用 Vistual Studio 的批量生成功能。

4. 使用
将 install 目录的动态链接库添加到环境变量中,这里推荐一个环境变量管理工具 rapid environment editor,非常好用。

bin 文件在 install/x64/vc16 中:

打开项目属性 VC++ 目录
包含目录

库目录

在 链接器 --> 输入 --> 附加依赖项 中,分别在 debug 和 release 模式下添加 opencv_world3415d.lib、opencv_world3415.lib。至此配置完毕。
添加头文件,即可开始使用 cuda
参考
1. [Win10使用VS2019从源码编译OpenCV 4.4 + CUDA 11.0 + Cudnn 8.0 + python3](https://www.jianshu.com/p/aa8455fcc672)