[记录]Python 编译支持cuda gpu加速的Opencv4.7

参考

依赖

1、VisualStudio (我使用的是2022版)VisualStudioSetup.exe – 蓝奏云 (lanzoup.com)

2、python-3.8.0-amd64.exe python-3.8.0-amd64.exe

3、cmake-3.26.0-windows-x86_64.msi cmake-3.26.0-windows-x86_64.msi.zip 官方

4、cuda_11.7.0_516.01_windows.exe (自行选择适配版本)

5、cudnn-windows-x86_64-8.9.6.50_cuda11-archive.zip (自行选择适配版本)

6、opencv-4.7.0.zip https://wwi.lanzoup.com/iWXkg0qghgxe 官方

7、opencv_contrib-4.7.0.zip https://wwi.lanzoup.com/iq29C0qgh9ed 官方

最新版:
git clone https://gitclone.com/github.com/opencv/opencv
git clone https://gitclone.com/github.com/opencv/opencv_contrib

注:本机笔记本2060,cuda_11.7.0,cudnn-8.9.6,Python 3.8.10

教程:

一、配置cuda环境

直接按照下面教程安装

CUDA安装及环境配置——最新详细版

二、CMake编译OpenCV源码得到OpenCV.sln工程文件

注:原有的opencv的python包必须卸载,python必须先安装numpy

此步骤需要下载github上的依赖,需要满足一定的网络条件 另:网络错误解决方案 或尝试使用steam++(watt tookit)加速

1、创建一个目录opencv_build (此目录以后不能变更,暂未找到解决办法)

opencv-4.7.0.zipopencv_contrib-4.7.0.zip都解压到opencv_build目录。再创建一个build目录为编译目录

img

2、打开Cmake-gui,选择以下相应的目录

img

3、第一次点击 configure,选择vs 2022x64架构,点击finish,开始第一次编译

img

4、编译完成后,在Search框内输入CUDAfast,勾选三个配置 : WITH_CUDA OPENCV_DNN_CUDAENABLE_FAST_MATH

5、Search框搜world,将build_opencv_world打勾。

6、Search框搜BUILD,勾选BUILD_opencv_python3

7、Search框搜CMAKE_CONFIGURATION_TYPES,内容只留下Release

8、search框搜NON,把OPENCV_ENABLE_NONFREE 打勾。

9、去掉OPENCV_GENERATE_SETUPVARS

10、search框搜MODULES,在OPENCV_EXTRA_MODULES_PATH一项,添加opencv_contrib4.7.0中的modules目录。再点击 configure

img

11、搜索框输入cuda,勾选CUDA_FAST_MATH CUDA_ARCH_BIN中将显卡的算力内容改成自己显卡的算力。查询算力网站。再点击 configure

img

img

12、去D:\opencv_build\build目录查看CMakeDownloadLog.txt文件。搜索https,如果搜索有结果,就表明网络条件不达标,文件下载失败。可以尝试使用steam++(watt tookit)加速,删除CMakeDownloadLog.txt文件。再点击 configure。再次打开文件搜索https,有结果就删除CMakeDownloadLog.txt文件,再点击 configure。最后查看自动生成的CMakeDownloadLog.txt内容,没有https开头的东西,说明所有文件全部成功。单击Generate来生成OpenCV.sln文件。

注:取消勾选带有java和face的选项可以加快速度,但人脸识别功能应该也会失效。

另外:编译 CUDA加速的 OpenCV-4.8.0 版本_opencv 4.8.0 gpu 编译-CSDN博客

  1. 去除Java相关;
    在这里插入图片描述
  2. 去除JS相关;
    在这里插入图片描述
  3. 去除tests相关;
    在这里插入图片描述
  4. 勾选CUDA相关
    在这里插入图片描述
  5. 将 OpenCV-Contrib 加入到项目中
    在这里插入图片描述
  6. 勾选 build_opencv_world
    在这里插入图片描述
  7. 去除 OpenCV_ENABLE_NONFREE
    在这里插入图片描述
  8. 勾选 ENABLE_FAST_MATH
    在这里插入图片描述
  9. 再次点击Configure
  10. 完成之后,选择CUDA_ARCH_BIN并勾选 CUDA_FAST_MATH
    在这里插入图片描述
  11. 再次点击Configure;
  12. 如果这次完成之后,没有红色,那么就直接Generate,done就结束了。

三、VS编译OpenCV.sln

1、点击Cmake-Gui里的Open Project,打开VS编译OpenCV.sln。

2、右击ALL_BUILD 点击生成,等待一个小时左右(大概生成一百多项)。如果生成没有失败项就表示生成成功。在右击INSTALL 点击生成,生成成功后就编译完成了。

img

四、测试

打开cmd输入python -c "import cv2; print(f'OpenCV: {cv2.__version__} for python installed and working')"

若输出OpenCV: 4.7.0 for python installed and working 就表明成功编译。

注:opencv_build 目录以后不能变更,暂未找到解决办法

分类: Python 标签: Python

评论

暂无评论数据

暂无评论数据

目录