在开始之前,请确保Windows电脑已经安装了以下软件:

  • Visual Studio(包含Desktop development with C++工作负载)
  • CMake
  • Git(克隆OpenCV源代码)
  • CUDA Toolkit(CUDA支持)
  • Python环境(建议使用Miniforge,包含NumPy)

众所周知,opencv可以通过pip一键安装预编译版本的

pip install opencv-python

或者安装具有额外模块(如视频处理、图像处理等)的OpenCV版本

pip install opencv-python-headless

 但是官方提供的预编译版本并不支持cuda的加速,想知道自己的版本是否支持cuda可以用python运行以下命令

import cv2
print("opencv version is:")
print(cv2.__version__)

if cv2.cuda.getCudaEnabledDeviceCount() > 0:
    print("CUDA support is enabled.")
else:
    print("CUDA support is not enabled.")

我之前也是安装了官方提供的预编译版本,不支持cuda加速,会输出

如果支持cuda加速应该输出

所以我们需要从opencv官方提供的源代码来编译后安装,首先:

下载源代码

  1. 克隆OpenCV和opencv_contrib的源代码:

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

或者手动去GitHub - opencv/opencv: Open Source Computer Vision LibraryGitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules下载源代码,下载完成后将源代码放置在你喜欢的目录下,例如我这里:

D:\AI\opencv-cuda\opencv-4.x
D:\AI\opencv-cuda\opencv_contrib-4.10.0

 然后在你喜欢的位置创建一个名为build的文件夹,我的这里在

D:\AI\opencv-cuda\opencv_contrib_cuda_4.10.0_win_amd64\build

然后打开cmd,cd到你的build文件夹下,并启用虚拟环境,我这里是

cd D:\AI\opencv-cuda\opencv_contrib_cuda_4.10.0_win_amd64\build
conda activate MMD311

然后运行 vcvars64.bat 脚本以配置Visual Studio的x64编译环境,请按照自己实际安装目录更改命令,我这里是

"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"

接下来运行以下命令,注意!!!请按照自己的实际目录修改,直接复制我的不能正常配置!!!(嫌麻烦不想自己改路径的话可以把这篇文章丢给ai 然后告诉ai自己的各个文件的的路径,让他帮你改)

安装过程中会自动下载一些缺少的东西,请保证自己可以访问国外网络,如github等,不然无法正常安装,会报错

"C:\Program Files\CMake\bin\cmake.exe" -HD:\AI\opencv-cuda\opencv-4.x -BD:\AI\opencv-cuda\opencv_contrib_cuda_4.10.0_win_amd64\build -G"Ninja Multi-Config" -DCMAKE_BUILD_TYPE=Release -DOPENCV_EXTRA_MODULES_PATH=D:\AI\opencv-cuda\opencv_contrib-4.10.0\modules -DBUILD_opencv_world=ON -DENABLE_CUDA_FIRST_CLASS_LANGUAGE=ON -DWITH_CUDA=ON -DCUDA_GENERATION=Auto -DBUILD_opencv_python3=ON -DPYTHON3_INCLUDE_DIR=C:/Users/mousennnn/.conda/envs/MMD311/include -DPYTHON3_LIBRARY=C:/Users/mousennnn/.conda/envs/MMD311/libs/python311.lib -DPYTHON3_EXECUTABLE=C:/Users/mousennnn/.conda/envs/MMD311/python.exe -DPYTHON3_NUMPY_INCLUDE_DIRS=C:/Users/mousennnn/.conda/envs/MMD311/Lib/site-packages/numpy/core/include -DPYTHON3_PACKAGES_PATH=C:/Users/mousennnn/.conda/envs/MMD311/Lib/site-packages

完成后会输出类似于以下的内容

-- General configuration for OpenCV 4.10.0-dev =====================================
--   Version control:               unknown
--
--   Extra modules:
--     Location (extra):            D:/AI/opencv-cuda/opencv_contrib-4.10.0/modules
--     Version control (extra):     unknown
--
--   Platform:
--     Timestamp:                   2024-09-13T05:43:43Z
--     Host:                        Windows 10.0.22621 AMD64
--     CMake:                       3.30.3
--     CMake generator:             Ninja Multi-Config
--     CMake build tool:            C:/Users/mousennnn/.conda/envs/MMD311/Scripts/ninja.exe
--     MSVC:                        1940
--     Configuration:               Debug Release
--     Algorithm Hint:              ALGO_HINT_ACCURATE
--
--   CPU/HW features:
--     Baseline:                    SSE SSE2 SSE3
--       requested:                 SSE3
--     Dispatched code generation:  SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
--       SSE4_1 (18 files):         + SSSE3 SSE4_1
--       SSE4_2 (2 files):          + SSSE3 SSE4_1 POPCNT SSE4_2
--       AVX (9 files):             + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
--       FP16 (1 files):            + SSSE3 SSE4_1 POPCNT SSE4_2 AVX FP16
--       AVX2 (38 files):           + SSSE3 SSE4_1 POPCNT SSE4_2 AVX FP16 AVX2 FMA3
--       AVX512_SKX (8 files):      + SSSE3 SSE4_1 POPCNT SSE4_2 AVX FP16 AVX2 FMA3 AVX_512F AVX512_COMMON AVX512_SKX
--
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ standard:                11
--     C++ Compiler:                C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.40.33807/bin/Hostx64/x64/cl.exe  (ver 19.40.33812.0)
--     C++ flags (Release):         /DWIN32 /D_WINDOWS /W4 /GR  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi  /fp:precise /FS    /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /wd4819  /O2 /Ob2 /DNDEBUG
--     C++ flags (Debug):           /DWIN32 /D_WINDOWS /W4 /GR  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi  /fp:precise /FS    /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /wd4819  /Zi /Ob0 /Od /RTC1
--     C Compiler:                  C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.40.33807/bin/Hostx64/x64/cl.exe
--     C flags (Release):           /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi  /fp:precise /FS      /O2 /Ob2 /DNDEBUG
--     C flags (Debug):             /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi  /fp:precise /FS    /Zi /Ob0 /Od /RTC1
--     Linker flags (Release):      /machine:x64  /INCREMENTAL:NO
--     Linker flags (Debug):        /machine:x64  /debug /INCREMENTAL
--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/cudart_static.lib C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/nppial.lib C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/nppc.lib C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/nppitc.lib C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/nppig.lib C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/nppist.lib C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/nppidei.lib C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/cublas.lib C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/cublasLt.lib C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/cufft.lib C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/nppif.lib C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/nppim.lib C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib/x64/nppicc.lib
--     3rdparty dependencies:
--
--   OpenCV modules:
--     To be built:                 aruco bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev datasets dnn dnn_objdetect dnn_superres dpm face features2d flann fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape signal stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab wechat_qrcode world xfeatures2d ximgproc xobjdetect xphoto
--     Disabled:                    -
--     Disabled by dependency:      -
--     Unavailable:                 alphamat cannops cvv freetype hdf java julia matlab ovis python2 python2 sfm viz
--     Applications:                tests perf_tests apps
--     Documentation:               NO
--     Non-free algorithms:         NO
--
--   Windows RT support:            NO
--
--   GUI:
--     Win32 UI:                    YES
--     VTK support:                 NO
--
--   Media I/O:
--     ZLib:                        build (ver 1.3.1)
--     JPEG:                        build-libjpeg-turbo (ver 3.0.3-70)
--       SIMD Support Request:      YES
--       SIMD Support:              NO
--     WEBP:                        build (ver encoder: 0x020f)
--     PNG:                         build (ver 1.6.43)
--       SIMD Support Request:      YES
--       SIMD Support:              YES (Intel SSE)
--     TIFF:                        build (ver 42 - 4.6.0)
--     JPEG 2000:                   build (ver 2.5.0)
--     OpenEXR:                     build (ver 2.3.0)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
--     PFM:                         YES
--
--   Video I/O:
--     FFMPEG:                      NO
--       avcodec:                   NO
--       avformat:                  NO
--       avutil:                    NO
--       swscale:                   NO
--       avresample:                NO
--     GStreamer:                   NO
--     DirectShow:                  YES
--     Media Foundation:            YES
--       DXVA:                      YES
--
--   Parallel framework:            Concurrency
--
--   Trace:                         YES (with Intel ITT)
--
--   Other third-party libraries:
--     Intel IPP:                   2021.12.0 [2021.12.0]
--            at:                   D:/AI/opencv-cuda/opencv_contrib_cuda_4.10.0_win_amd64/build/3rdparty/ippicv/ippicv_win/icv
--     Intel IPP IW:                sources (2021.12.0)
--               at:                D:/AI/opencv-cuda/opencv_contrib_cuda_4.10.0_win_amd64/build/3rdparty/ippicv/ippicv_win/iw
--     Lapack:                      NO
--     Eigen:                       NO
--     Custom HAL:                  NO
--     Protobuf:                    build (3.19.1)
--     Flatbuffers:                 builtin/3rdparty (23.5.9)
--
--   NVIDIA CUDA:                   YES (ver 12.1.66, CUFFT CUBLAS)
--     NVIDIA GPU arch:             86
--     NVIDIA PTX archs:
--
--   cuDNN:                         YES (ver 8.9.6)
--
--   OpenCL:                        YES (NVD3D11)
--     Include path:                D:/AI/opencv-cuda/opencv-4.x/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
--
--   Python 3:
--     Interpreter:                 C:/Users/mousennnn/.conda/envs/MMD311/python.exe (ver 3.11.9)
--     Libraries:                   C:/Users/mousennnn/.conda/envs/MMD311/libs/python311.lib (ver 3.11.9)
--     Limited API:                 NO
--     numpy:                       C:/Users/mousennnn/.conda/envs/MMD311/Lib/site-packages/numpy/core/include (ver 1.25.0)
--     install path:                C:/Users/mousennnn/.conda/envs/MMD311/Lib/site-packages/cv2/python-3.11
--
--   Python (for build):            C:/Users/mousennnn/.conda/envs/MMD311/python.exe
--
--   Java:
--     ant:                         NO
--     Java:                        NO
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO
--
--   Install to:                    D:/AI/opencv-cuda/opencv_contrib_cuda_4.10.0_win_amd64/build/install
-- -----------------------------------------------------------------
--
-- Configuring done (1310.7s)
-- Generating done (12.3s)
-- Build files have been written to: D:/AI/opencv-cuda/opencv_contrib_cuda_4.10.0_win_amd64/build

接下来,在同一个命令行窗口下运行

"C:\Program Files\CMake\bin\cmake.exe" --build . --target install --config Release

等待安装完成,接下来大功告成,再试试运行

import cv2
print("opencv version is:")
print(cv2.__version__)

if cv2.cuda.getCudaEnabledDeviceCount() > 0:
    print("CUDA support is enabled.")
else:
    print("CUDA support is not enabled.")

 输出

至此,

支持cuda的opencv安装完成!!

 

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐