系列文章目录

win10下Opencv源码编译支持CUDA加速的Python环境,超级详细教程!win10下对编译完成后opencv_cuda进行移植



文章目录

  • 系列文章目录
  • 环境准备
  • cmake编译
  • 注意事项
  • vs2015编译
  • 测试结果对比


环境准备

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/

cuda python帮助文档 cuda opencv python_opencv

OpenCV-contrib4.5.0下载地址:

https://www.bzblog.online/opencv/opencv_contrib/

cuda python帮助文档 cuda opencv python_cuda python帮助文档_02

cmake编译

将下载的exe文件进行安装,zip压缩包解压,得到如下目录;

cuda python帮助文档 cuda opencv python_cuda_03


进入OpenCV目录下,新建一个文件夹gpubuild,作为cmake编译文件存放目录。

打开cmake,目录选择如下:

cuda python帮助文档 cuda opencv python_cudnn_04


完成后点击Configure

第一次运行,记得参数选择x64

cuda python帮助文档 cuda opencv python_cudnn_05


点击Finish

等待configure完成,在这个界面中进行如下更改:

将build_java勾选取消、build_tests勾选取消、with vtk勾选取消

cuda python帮助文档 cuda opencv python_cuda_06


勾选上这个OPENCV_ENABLE_NONFREE

cuda python帮助文档 cuda opencv python_cuda python帮助文档_07


然后添加contrib的目录:

cuda python帮助文档 cuda opencv python_opencv_08


然后根据自己的anaconda中Python和numpy的路径来进行如下配置:

cuda python帮助文档 cuda opencv python_opencv_09


到这一步Python的环境就配置好了,接下来配置GPU环境:

勾选上WITH_CUDA

cuda python帮助文档 cuda opencv python_cuda_10


由于没有WITH_CUDNN,因此就手动添加,点击Add Entry进行如下设置

cuda python帮助文档 cuda opencv python_cudnn_11


搜索cuda关键字

cuda python帮助文档 cuda opencv python_opencv_12


点击config运行之后,再点击generate安装,如果一切OK即可完成CMake部分;

cuda python帮助文档 cuda opencv python_cudnn_13

注意事项

第一次编译的新手会遇到各种问题,其中最常见的一个网络问题就是无法下载第三方库,导致CMake编译失败,这里时候需要手动下载一下;

cuda python帮助文档 cuda opencv python_python_14

保证opencv\sources\.cache目录下的每个文件都不为0kb(0kb代表下载缓存失败)

需要到CMakeDownloadLog.txt查看缺失哪些文件

cuda python帮助文档 cuda opencv python_cudnn_15


下载完成之后通过cmd命令查看对应文件的哈希值,如一致则将文件命名为:md5-文件名,删除原来为0KB的文件;

certutil -hashfile 文件绝对路径 MD5

cuda python帮助文档 cuda opencv python_cudnn_16


重复上述操作,确保sources\.cache所以文件都下载了。查看确保txt没有未下载项

cuda python帮助文档 cuda opencv python_python_17

vs2015编译

cuda python帮助文档 cuda opencv python_python_18

切换到release模型下,右键点击ALL_BUILD选择【生成….】运行完成

cuda python帮助文档 cuda opencv python_cuda python帮助文档_19


再次右键选择install,选择【生成…】这两次过程都会比较漫长,编译完成之后,就会得到intall目录,我们需要的就是它,其它都可以删掉了。这样我们就完成了OpenCV CUDA的编译。

那么这个Python版本的OpenCV是否已经安装了,实际上在点击install进行生成的时候,就已经把Python版本的OpenCV模块安装到Python环境中去了。

cuda python帮助文档 cuda opencv python_python_20

不过通过这种方式安装的Python版OpenCV通过pip list却无法显示出来,因为这个命令只能显示通过pip安装的模块,但是却是可以使用的。

cuda python帮助文档 cuda opencv python_cuda python帮助文档_21

测试结果对比

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

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

CPU版推理时间

cuda python帮助文档 cuda opencv python_cuda python帮助文档_22


GPU版推理时间

cuda python帮助文档 cuda opencv python_cudnn_23


加速推理效果还是很明显的!!!

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

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