cmake编译opencv支持cuda
编译opencv
1.别使用DNN进行部署推理,使用ONNX Runtime
DNN不支持yolo5之后的模型节点
需要自己编译支持cuda,编译起来各种问题
DNN推理效果不如ONNX Runtime
需要 CUDA 加速(DNN、图像处理、深度学习)
【组合 A:OpenCV 4.5.5 + CUDA 11.1 ~ 11.6 + VS2019】(最稳定 CUDA 组合)
这是生产环境中使用最广的 CUDA 编译组合:
| 组件 | 推荐版本 |
|---|---|
| OpenCV | 4.5.5 |
| CUDA | 11.1 / 11.4 / 11.6 |
| cuDNN | 8.2 ~ 8.6 |
| Visual Studio | 2019(最推荐) |
| CMake | ≥ 3.20 |
✔ 编译 CUDA 成功率很高
✔ dnn 模块支持良好
✔ 社区使用最多,教程数量最多
你的环境是:
-
CUDA 11.6
-
cuDNN 8.6
→ 完全匹配 OpenCV 4.5.5 CUDA 编译
【组合 B:OpenCV 4.8.0 + CUDA 11.8 + VS2022】(较新,但有兼容性风险)
适合追新,但:
-
编译更慢
-
CUDA 与 VS2022 的兼容性比 VS2019 略差
除非需要特别新特性,一般不推荐。
安装cuda和cudnn
确定安装好并验证安装成功
通常步骤:
1.nvidia-smi查看显卡支持最高cuda版本
2.官网下载对应版本的cuda安装包
3.cudnn官网下载cudnn的库文件(需要注册)可能需要科学上网
3.默认路径安装cuda避免不必要的麻烦(如果不需要多cuda版本选精简安装即可)
4.拷贝cudnn文件到cuda目录(具体哪个目录搜一下)
5.命令提示符下:nvcc -V 即可显示当前环境下的cuda版本
下载源码
直接下载source压缩包或者GitHub clone
https://opencv.org/releases/
下载opencv_contrib
https://github.com/opencv/opencv_contrib/tags
下载cmake
https://cmake.org/download/
构建目录
例如:opencv_build/build
把两个opencv的压缩包放进opencv_build并解压
build用于放编译好的文件
编译
管理员模式打开cmake_GUI(在bin下)

1处填opencv源码目录
2处填编译文件生成目录
3填好后点击Configure,选择生成项目的IDE版本和cpu架构(我的是vs2017+x64),finlish等待,生成配置目录4处,即中间的列表
如何填编译选项
不同版本的opencv编译选项不同,甚至别的博主跟你下载同一个版本编译选项也不一样
如下有就选,没有就不用选了,有些选项需要勾选Advance才会显示。
- 搜索栏搜索cuda,勾选和cuda相关选项。其中,BUILD_CUDA_STUBS不用打钩。
- 勾选 BUILD_opencv_world 最终只生成一个动态链接库方便使用
- 搜索 OPENCV_EXTRA_MODULES_PATH ,填入 OpenCV_contrib 解压文件夹 modules 的路径
- 如果有CUDA_TOOLKIT_ROOT_DIR变量,填cuda目录。如果没有,Add entry新建变量填目录(我在填这个变量之前,搜索cuda没有这么多选项,填完这些选项就出来了)(注意新建时变量类型是FilePath还是path)
- CUDA_INCLUDE_DIR变量(没有新建)
- CUDA_NVCC_EXECUTABLE(有直接填,没有就新建)(路径例如为:
C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.8/bin/nvcc.exe)

| 选项 | 设置为 |
|---|---|
| BUILD_TESTS | OFF |
| BUILD_PERF_TESTS | OFF |
| BUILD_EXAMPLES | OFF |
| BUILD_opencv_world | ON(建议开启) |
| BUILD_opencv_python | OFF(如果你不需要 Python) |
| CMake 选项 | 必须设置 |
|---|---|
| WITH_CUDA | ON |
| CUDA_ARCH_PTX | 空 |
| CUDA_ARCH_BIN | (必须与你显卡一致)例如 8.6(RTX30)或 8.9(RTX40) |
| OPENCV_DNN_CUDA | ON |
| WITH_CUDNN | OFF(你没安装 cuDNN 就不要开) |
| ENABLE_FAST_MATH | ON |
| CUDA_FAST_MATH | ON |
点击Generate 等待生成源码,点击open project 打开项目
选择编译选项:
-
Release
-
x64
生成->ALL build (如果没有,调试->All build选项点开,确定,在看看生成里有没有)
等待编译
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)