很高兴在雪易的CSDN遇见你
VTK技术爱好者 QQ:870202403 公众号:VTK忠粉
前言
本文分享OpenCV-4.9.0源码编译流程,包含CUDA模块,包含Python-opencv,希望对各位小伙伴有所帮助!
感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!
你的点赞就是我的动力(^U^)ノ~YO
目录
前言
1. 环境准备
2. 源码下载
3. CMake编译
3.1 创建cmake项目
3.2 设置编译配置
结论:
1. 环境准备
- Visual Studio 2022
- Python3.12
- CUDA: 12.2, cudnn: 9.0
- CMake3.27.0
2. 源码下载
下载OpenCV源码,此处需要下载两个源码,分别是opencv
和opencv_contrib
。下载链接为
opencv:
https://github.com/opencv/opencv/archive/4.8.0.zip
opencv_contrib:
https://github.com/opencv/opencv_contrib/tags
不过在下载时要注意一点,就是要保证opencv
和opencv_contrib
下载的版本要一致,此处我们下载的版本为:4.9.0。下载完成后,将两个文件解压到同一个文件夹中。
3. CMake编译
3.1 创建cmake项目
打开CMake软件,设置项目源码路径,并在源码路径下创建一个build
文件夹,并设置编译文件夹,如下图所示:
接下来点击Configure
,进行第一次配置,然后回弹出编译平台选择,此处根据自己电脑的编译软件进行选择,在本文中我们使用的是Visual Studio 2022
,然后选择编译平台为x64
。
第一次配置生成后,输出如下所示:
3.2 设置编译配置
首先添加opencv_contrib
模块的引用,在OPENCV_EXTRA_MODULES_PATH
条目中添加该模块的路径,然后选择OPENCV_ENABLE_NONFREE
,如下图所示:
接下来添加CUDA的设置,首先选择WITH_CUDA
,如下图所示:
然后选择OPENCV_DNN_CUDA
,此处还可以选择OPENCV_DNN_OPENVINO
等不同的模型部署,如下图所示:
最后选择ENABLE_FAST_MATH
此处为了让生成的依赖库文件都集成在一个文件中,方便后面使用,所以此处可以选择BUILD_opencv_world
,如果不选择,生成的 文件将会被拆散成多个文件。
还有Python相关的选项
第二次Configure
后,下一步就是需要检查一下其过程是否有异常抛出
第一个异常:
解决方案:
DNN: CUDA backend requires cuDNN. Please resolve dependency or disable OPENCV_DNN_CUDA=OFF · Issue #25426 · opencv/opencv · GitHub
cuDNN9还不支持,因此切换为相应的cuDNN版本。
下载时需要注册账号,但又经常会卡在注册账号页面。可以右键复制连接后,在迅雷中下载。
下载完成后,打开压缩文件,将lib,dll,include文件夹的文件复制到CUDA的安装目录对应的文件夹下。
并在变量CUDNN_LIBRARY中写入cudnn.lib的路径
第二个异常:文件下载异常
首先查看一下配置输出框是否抛出警告,如果有的话,一定要解决一下,不然后续编译会出错。
当出现上图所示的异常后,就需要手动解决一下该问题,首先找到build\CMakeDownloadLog.txt
文件,然后打开后,查看一下是否有下图所示的文件确实异常。如果有,请自行下载,下载链接如下图所示标注位置,下载后将文件放置在下图所示缺失文件路径,并按照要求修改名称。
折腾了一天,终于看到Configuring done !
结论:
感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!