很高兴在雪易的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源码,此处需要下载两个源码,分别是opencvopencv_contrib。下载链接为

opencv:
https://github.com/opencv/opencv/archive/4.8.0.zip
opencv_contrib:
https://github.com/opencv/opencv_contrib/tags

  不过在下载时要注意一点,就是要保证opencvopencv_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的路径 

第二个异常:文件下载异常

  首先查看一下配置输出框是否抛出警告,如果有的话,一定要解决一下,不然后续编译会出错。

image

  当出现上图所示的异常后,就需要手动解决一下该问题,首先找到build\CMakeDownloadLog.txt文件,然后打开后,查看一下是否有下图所示的文件确实异常。如果有,请自行下载,下载链接如下图所示标注位置,下载后将文件放置在下图所示缺失文件路径,并按照要求修改名称。

image

正常的编译文件如下:

折腾了一天,终于看到Configuring done !

结论:

感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐