大家好,今天给大家分享一下最新版本OpenCV4.8如何编译支持CUDA加速,实现深度学习模型部署速度提升。
软件版本支持
CMake3.13 或者以上版本
https://cmake.org/
VS2017专业版或者以上版本
3050ti + CUDA11.3
OpenCV4.8源码包
https://github.com/opencv/opencv/releases/tag/4.8.0
OpenCV4.8 扩展模块源码包
https://github.com/opencv/opencv_contrib/releases/tag/4.8.0
把OpenCV4.8与OpenCV4.8扩展包都解压缩到D盘,目录分别如下:
D:\opencv-4.8.0
D:\opencv_contrib-4.8.0
编译生成
打开CMake,设置好如下的目录选项
然后点击【Configure】弹出对话框如下:
点击【Finish】完成 配置生成。然后点击【Generate】完成生成。
然后设置扩展模块路径
设置完成以后,搜索CUDA关键字,全部勾上相关选项之后继续点击【Configrure】,运行完成以后,再次搜索CUDA关键字,选择如下:
点击【Generate】,生成如下:
从newbuild文件夹中选择OpenCV.sln 工程文件 双击打开如下:
然后切换到Release模式,点击INSTALL右键生成,等待两个小时以后基本上会完成编译,我最终完成编译之后的结果。
技巧提示:
1.无法下载第三方文件,请手动下载以后放到source/.cache文件夹内相关位置即可。
2.无需编译 xFeature2D、FaceModel、Test等模块(不然需要翻墙下载一些依赖包),统统取消勾选(默认是勾选的) 配置运行测试
重新配置好OpenCV + CUDA的支持,修改包含目录、库目录、链接器,然后设置好新的环境变量路径。启动VS2017,运行OpenCV的人脸检测案例,运行结果如下:
运行YOLOv8 姿态评估模型,效果如下(只有OpenCV4.7版本以后才支持该模型部署运行)
其中在OpenCV中启用GPU推理执行,需要设置下面两行代码:
net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);
net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);
总结
OpenCV4支持通过GPU实现CUDA加速执行,实现对OpenCV图像处理程序的加速运行,当前支持加速的模块包括如下:
- 图像背景分割
- 视频编解码
- 特征2D
- 卷积滤波
- 图像处理
- 对象检测
- 光流
- 双目视觉
- 深度神经网络
基本上包含了OpenCV图像处理的主要功能,这里有一个地方需要特别注意,就是编译时候选择不同的CUDA版本,对上述模块的支持略微不同。更多OpenCV CUDA函数使用知识可以参考本人新书:
七折优惠专属《OpenCV应用开发:入门、进阶与工程化实践》