欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!

程序员文章站 2022-03-20 18:22:42
环境准备1 vs20152 anaconda+Python3.7.4+numpy3 cuda和cudnn环境(cuda10.0+cudnn7.6.5)4 cmake5 OpenCV4.5.0以及OpenCV-contrib4.5.0压缩包OpenCV4.5.0下载地址https://www.bzblog.online/opencv/opencv-4.5.0/OpenCV-contrib4.5.0下载地址:https://www.bzblog.online/opencv/opencv_co...

环境准备

1 vs2015
2 anaconda+Python3.7.4+numpy
3 cuda和cudnn环境(cuda10.0+cudnn7.6.5)
4 cmake
5 OpenCV4.5.0以及OpenCV-contrib4.5.0压缩包
OpenCV4.5.0下载地址
https://www.bzblog.online/opencv/opencv-4.5.0/
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!

OpenCV-contrib4.5.0下载地址:
https://www.bzblog.online/opencv/opencv_contrib/
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!

cmake编译

将下载的exe文件进行安装,zip压缩包解压,得到如下目录;
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
进入OpenCV目录下,新建一个文件夹gpubuild,作为cmake编译文件存放目录。
打开cmake,目录选择如下:
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
完成后点击Configure
第一次运行,记得参数选择x64
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
点击Finish
等待configure完成,在这个界面中进行如下更改:
将build_java勾选取消、build_tests勾选取消、with vtk勾选取消
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
勾选上这个OPENCV_ENABLE_NONFREE
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
然后添加contrib的目录:
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
然后根据自己的anaconda中Python和numpy的路径来进行如下配置:
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
到这一步Python的环境就配置好了,接下来配置GPU环境:
勾选上WITH_CUDA
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
由于没有WITH_CUDNN,因此就手动添加,点击Add Entry进行如下设置
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
搜索cuda关键字
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
点击config运行之后,再点击generate安装,如果一切OK即可完成CMake部分;
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!

注意事项

第一次编译的新手会遇到各种问题,其中最常见的一个网络问题就是无法下载第三方库,导致CMake编译失败,这里时候需要手动下载一下;
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!

保证opencv\sources\.cache目录下的每个文件都不为0kb(0kb代表下载缓存失败)
需要到CMakeDownloadLog.txt查看缺失哪些文件
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
下载完成之后通过cmd命令查看对应文件的哈希值,如一致则将文件命名为:md5-文件名,删除原来为0KB的文件;

certutil -hashfile 文件绝对路径 MD5

win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
重复上述操作,确保sources\.cache所以文件都下载了。

查看确保txt没有未下载项
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!

vs2015编译

win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!

切换到release模型下,右键点击ALL_BUILD选择【生成….】运行完成
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
再次右键选择install,选择【生成…】这两次过程都会比较漫长,编译完成之后,就会得到intall目录,我们需要的就是它,其它都可以删掉了。这样我们就完成了OpenCV CUDA的编译。
那么这个Python版本的OpenCV是否已经安装了,实际上在点击install进行生成的时候,就已经把Python版本的OpenCV模块安装到Python环境中去了。
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!

不过通过这种方式安装的Python版OpenCV通过pip list却无法显示出来,因为这个命令只能显示通过pip安装的模块,但是却是可以使用的。
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!

测试结果对比

在yolov4推理代码中添加GPU调用代码

net.setPreferableBackend(cv.dnn.DNN_BACKEND_CUDA)
net.setPreferableTarget(cv.dnn.DNN_TARGET_CUDA)

CPU版推理时间
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
GPU版推理时间
win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!
加速推理效果还是很明显的!!!

参考博客:
https://blog.csdn.net/weixin_39717367/article/details/112118885
https://blog.csdn.net/qq_37781464/article/details/110078370

如果阅读本文对你有用,欢迎关注点赞评论收藏呀!!!
2021年2月23日12:42:43

本文地址:https://blog.csdn.net/JulyLi2019/article/details/113973614