OpenCV with CUDA编译实战

jmfans 发布于 2023-11-07 458 次阅读


AI 摘要

OpenCV with CUDA编译实战,介绍了在Windows环境下使用CUDA编译OpenCV的步骤。首先需要安装Anaconda和CMake,并创建Python环境。然后下载OpenCV和OpenCV-contrib的源代码,并配置CMake。在配置过程中需要指定Python环境,并选择需要的编译选项。接着进行VS编译,并将生成的文件复制到Anaconda环境中。最后,可以使用测试程序进行验证。

环境要求

Windows 11 22H2
cuda 12.2.0
cuDNN 8.9.5
vs 2022 以及 c++桌面开发环境
python 3.9
opencv 4.8.0

安装conda环境

# 安装包
https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Windows-x86_64.exe

# 安装地址(可选)
D:\Program\anaconda3

# 安装配置(勾选)
1.Create start menu shortcuts (supported packages only).
2.Register Anaconda3 as my default Python 3.X
3.Clear the package cache upon completion

# 注册conda(可选)
conda init powershell
常用conda命令
# 创建名为opencv的Python版本为3.9的环境
conda create -n op python=3.9

# 查看Anaconda下管理的所有Python环境
conda info -e

# 激活pytorch
conda activate op

# 退出虚拟环境
conda deactivate

# 删除opencv环境:
conda remove --name op --all

配置Cmake环境

# https://cmake.org/

# 下载gui版&安装
https://github.com/Kitware/CMake/releases/download/v3.28.0-rc3/cmake-3.28.0-rc3-windows-x86_64.msi

# 新建文件夹
mkdir opencv
cd opencv
mkdir build

# 下载opencv
https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip

# 解压至当前目录后clone opencv-contrib
git clone https://github.com/opencv/opencv_contrib.git

# 完成后的目录结构
|--opencv\
|--opencv\build
|--opencv\opencv-4.8.0
|--opencv\opencv_contrib-4.8.0

# 打开camke
source_path = ..\opencv\opencv-4.8.0
build_path = ..\opencv\opencv_contrib-4.8.0

# Add Entry 添加Python环境
PYTHON3_EXECUTABLE\
FILEPATH\
"PATH TO YOUR PYTHON.EXE WHERE IN ANACONDA ENVIREMENT"

第一次点击configure后,如果没有error报错,则
0.弹出的VS配置选项-VS17-x64
1.勾选BUILD_opencv_world、WITH_CUDA、OPENCV_DNN_CUDA
2.设置OPENCV_EXTRA_MODULES_PATH为\opencv\opencv_contrib-4.8.0\modules

第二次点击configure,如果没有报错,则
1.勾选FAST_MATH字样选项,去除所有TEST、Java字样选项
2.按需求勾选ENABLE-NOFREE、DNN-PERF、BUILD-XX等
3.检查是否勾选opencv-python3

第三次点击configure,如果没有报错,则点击Generate
若没有报错,进入编译阶段

VS编译

1.点击Open Project
2.设置编译平台(Release/Debug均可)和 x64, 右键ALL_BUILD-生成,生成时间较长
3.生成成功后,右键INSTALL-仅用于项目-仅生成INSTALL

配置modules

在编译输出文件夹lib\python3\Release下的
\cv2.cp39-win_amd64.pyd复制到anaconda3\envs\op\Lib\site-packages\cv2\python-3.9
\bin\Release目录下所有文件复制到anaconda3\envs\op\Lib\site-packages

测试程序

import cv2
cv2.cuda.printCudaDeviceInfo(0)