Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)

Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)

  • opencv部署yolo的cpu速度较慢,FPS=5-10左右吧,所以想通过CUDA做一下加速
  • 网上查看了一些编译相关的帖子,踩坑了大概三四天时间,编译成功了!
  • 只要功夫深,铁杵磨成针~
  • 你可能编译时需要的.cache文件夹:https://download.csdn.net/download/yohnyang/87638940
  • 下边给出详细步骤

1.准备工作

1.1 安装CUDA、cuDNN

  • 检查CUDA版本

    • 控制面板 -帮助 - 系统信息 - 组件:查看支持CUDA版本
      Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第1张图片

    • 或者win+R打开命令行输入:nvidia-smi
      Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第2张图片

    • 去官网CUDA下载
      Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第3张图片

    • 下载cuDNN
      官网cuDNN 下载完成后,将cudnn中各文件夹bin、

1.2 下载opencv、contrib模块源码

  • opencv源码:
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第4张图片
  • contrib源码:https://github.com/opencv/opencv_contrib
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第5张图片

1.3 下载opencv第三方库

  • 在进行CMake编译时,会自动下载第三方库到opencv源码目录下的新建文件夹.cache中:
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第6张图片

  • 但是一般不会下载的特别顺利,经常会出错,如果下载失败,文件夹对应的文件将为0kB
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第7张图片

  • 所以不如提前下载好并重命名后放到指定位置:.\xxx\opencv-4.5.5\.cache,下载方式此处着重参考:https://blog.csdn.net/fengxinzioo/article/details/104919888

  • 在此给出简单操作方式:直接去github:https://github.com/opencv/opencv_3rdparty挨个找到分支并下载到对应文件夹,然后修改至对应0KB文件的名字后删除原有文件即可。

  • 文件重命名及所放目录汇总:
    ps:opencv版本不同可能对应名称也不同,修改时还需注意!

D:\OPENCV4.6.0\OPENCV\SOURCES\.CACHE
│  .gitignore
│
├─ade
│      b624b995ec9c439cbc2e9e6ee940d3a2-v0.1.1f.zip
│
├─data
│      7505c44ca4eb54b4ab1e4777cb96ac05-face_landmark_model.dat
│
├─ffmpeg
│      5f9e2b2e04c15f080f40e844de80c867-opencv_videoio_ffmpeg_64.dll
│      5573e2262ad1298e603122b7759fc2f6-opencv_videoio_ffmpeg.dll
│      8862c87496e2e8c375965e1277dee1c7-ffmpeg_version.cmake
│
├─ippicv
│      879741a7946b814455eee6c6ffde2984-ippicv_2020_win_intel64_20191018_general.zip
│
|--wechat_qrcode
|     6fb4976b32695f9f5c6305c19f12537d-detect.prototxt
|     69db99927a70df953b471daaba03fbef-sr.prototxt
|     238e2b2d6f3c18d6c3a30de0c31e23cf-detect.caffemodel
|     cbfcd60361a73beb8c583eea7e8e6664-sr.caffemodel
|
└─xfeatures2d
    ├─boostdesc
    │      0ae0675534aa318d9668f2a179c2a052-boostdesc_lbgm.i
    │      0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i
    │      202e1b3e9fec871b04da31f7f016679f-boostdesc_binboost_064.i
    │      232c966b13651bd0e46a1497b0852191-boostdesc_bgm_bi.i
    │      324426a24fa56ad9c5b8e3e0b3e5303e-boostdesc_bgm_hd.i
    │      98ea99d399965c03d555cef3ea502a0b-boostdesc_binboost_128.i
    │      e6dcfa9f647779eb1ce446a8d759b6ea-boostdesc_binboost_256.i
    │
    └─vgg
            151805e03568c9f490a5e3a872777b75-vgg_generated_120.i
            7126a5d9a8884ebca5aea5d63d677225-vgg_generated_64.i
            7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i
            e8d0dcd54d1bcfdc29203d011a797179-vgg_generated_48.i
  • 注意,opencv460等版本,编译完CUDA后仍然报如下警告时:例如下载ffmpeg失败,到路径.\xxx\opencv460\opencv-4.6.0\3rdparty\ffmpeg下注释掉如下代码,再次configure。如果不报警告可不做处理。
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第8张图片

2. CMake编译

  • 先说下总的编译步骤:要想速度快些的话,可将下边2、3步合并
    1. 选择好源码路径+build路径,选择VS版本,第1次configure
    1. 勾选:BUILD_CUDA_STUBS、OPENCV_DNN_CUDA、WITH_CUDA、BUILD_opencv_world、OPENCV_ENABLE_NONFREE
      去掉勾选:BUILD_PERF_TESTS、BUILD_TEST、BUILD_opencv_python_tests、包含python、js、java的设置
      添加contriblu路径:对应OPENCV_EXTRA_NODULES_PATH:./xxx/contrib/modules
      第2次figure
    1. 此时如果网络不好的话,会显示一些警告:比如iccpv\xfeayures2d等下载失败,去github下载第三方库,复制到对应文件夹并重命名,第3次configure
    1. CUDA_ARCH_BIN:选择适合自己的CUDA算力,勾选CUDA_FAST_MATH、ENABLE_FAST_MATH,第4次configure
    1. 去掉勾选:OPENCV_GENERATE_SETUPVARS,第5次configure
    1. 如果有问题,解决问题重复configure,如果没有,点击generate
  • 下边给出过程截图:
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第9张图片
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第10张图片
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第11张图片
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第12张图片
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第13张图片
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第14张图片
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第15张图片

  • 去除勾选test、js、jsva:
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第16张图片
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第17张图片
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第18张图片

  • 再次点击 Configure

  • CUDA_ARCH_BIN表示的是支持的显卡算力版本,在搜索栏搜索CUDA_ARCH_BIN会看见支持所有算力版本,可以指定自己的版本,删除不需要的版本,加快编译
    在这里插入图片描述
    勾选:
    在这里插入图片描述
    修改完成后,再次点击 Configure

  • 如果出现以下警告:

CMake Warning at cmake/OpenCVGenSetupVars.cmake:54 (message):
  CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install
  directory
Call Stack (most recent call first):
 CMakeLists.txt:1084 (include)

解决方法: 在搜索框中输入OPENCV_GENERATE_SETUPVARS,去除勾选
Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第19张图片

  • 没有问题后,结果如下:
General configuration for OpenCV 4.6.0 =====================================
  Version control:               unknown

  Extra modules:
    Location (extra):            C:/Users/lenovo/Desktop/opencv4.6/opencv_contrib-4.6.0/modules
    Version control (extra):     unknown

  Platform:
    Timestamp:                   2023-03-31T04:51:37Z
    Host:                        Windows 10.0.19045 AMD64
    CMake:                       3.26.0-rc5
    CMake generator:             Visual Studio 16 2019
    CMake build tool:            D:/program/VS2019/MSBuild/Current/Bin/MSBuild.exe
    MSVC:                        1929
    Configuration:               Debug Release

  CPU/HW features:
    Baseline:                    SSE SSE2 SSE3
      requested:                 SSE3
    Dispatched code generation:  SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
      requested:                 SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
      SSE4_1 (16 files):         + SSSE3 SSE4_1
      SSE4_2 (1 files):          + SSSE3 SSE4_1 POPCNT SSE4_2
      FP16 (0 files):            + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
      AVX (4 files):             + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
      AVX2 (31 files):           + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
      AVX512_SKX (5 files):      + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX

  C/C++:
    Built as dynamic libs?:      YES
    C++ standard:                11
    C++ Compiler:                D:/program/VS2019/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe  (ver 19.29.30148.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:fast     /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /MP  /MD /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:fast     /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /MP  /MDd /Zi /Ob0 /Od /RTC1 
    C Compiler:                  D:/program/VS2019/VC/Tools/MSVC/14.29.30133/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:fast     /MP   /MD /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:fast     /MP /MDd /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:          cudart_static.lib nppc.lib nppial.lib nppicc.lib nppidei.lib nppif.lib nppig.lib nppim.lib nppist.lib nppisu.lib nppitc.lib npps.lib cublas.lib cudnn.lib cufft.lib -LIBPATH:C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7/lib/x64
    3rdparty dependencies:

  OpenCV modules:
    To be built:                 aruco barcode 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 hdf hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab wechat_qrcode world xfeatures2d ximgproc xobjdetect xphoto
    Disabled:                    python3 python_bindings_generator python_tests
    Disabled by dependency:      -
    Unavailable:                 alphamat cvv freetype java julia matlab ovis python2 python2 sfm viz
    Applications:                apps
    Documentation:               NO
    Non-free algorithms:         YES

  Windows RT support:            NO

  GUI: 
    Win32 UI:                    YES
    VTK support:                 NO

  Media I/O: 
    ZLib:                        build (ver 1.2.12)
    JPEG:                        build-libjpeg-turbo (ver 2.1.2-62)
    WEBP:                        build (ver encoder: 0x020f)
    PNG:                         build (ver 1.6.37)
    TIFF:                        build (ver 42 - 4.2.0)
    JPEG 2000:                   build (ver 2.4.0)
    OpenEXR:                     build (ver 2.3.0)
    HDR:                         YES
    SUNRASTER:                   YES
    PXM:                         YES
    PFM:                         YES

  Video I/O:
    DC1394:                      NO
    FFMPEG:                      YES (prebuilt binaries)
      avcodec:                   YES (58.134.100)
      avformat:                  YES (58.76.100)
      avutil:                    YES (56.70.100)
      swscale:                   YES (5.9.100)
      avresample:                YES (4.0.0)
    GStreamer:                   NO
    DirectShow:                  YES
    Media Foundation:            YES
      DXVA:                      YES

  Parallel framework:            Concurrency

  Trace:                         YES (with Intel ITT)

  Other third-party libraries:
    Intel IPP:                   2020.0.0 Gold [2020.0.0]
           at:                   C:/Users/lenovo/Desktop/opencv4.6/build/3rdparty/ippicv/ippicv_win/icv
    Intel IPP IW:                sources (2020.0.0)
              at:                C:/Users/lenovo/Desktop/opencv4.6/build/3rdparty/ippicv/ippicv_win/iw
    Lapack:                      NO
    Eigen:                       NO
    Custom HAL:                  NO
    Protobuf:                    build (3.19.1)

  NVIDIA CUDA:                   YES (ver 11.7, CUFFT CUBLAS FAST_MATH)
    NVIDIA GPU arch:             61 70 75 80 86
    NVIDIA PTX archs:

  cuDNN:                         YES (ver 8.6.0)

  OpenCL:                        YES (NVD3D11)
    Include path:                C:/Users/lenovo/Desktop/opencv4.6/opencv-4.6.0/3rdparty/include/opencl/1.2
    Link libraries:              Dynamic load

  Python (for build):            D:/program/Anaconda3/python.exe

  Java:                          
    ant:                         NO
    JNI:                         NO
    Java wrappers:               NO
    Java tests:                  NO

  Install to:                    C:/Users/lenovo/Desktop/opencv4.6/build/install
-----------------------------------------------------------------

Configuring done (28.9s)
  • 如果确定没有其他错误之后,可点击 generete
    在这里插入图片描述

3. VS编译

  • vs2019打开工程:
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第20张图片
    或者右键选择打开:
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第21张图片

  • 分别在debug以及release模式下,在解决方案资源管理器窗口中找到ALL_BUILD 右击,点击生成,等待编译完成
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第22张图片

  • 点击install生成
    Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第23张图片

  • 编译好后在build路径下会生成install文件夹,打开可以看到编译成功的opencv包:

Win10下Opencv+CUDA联合编译详细教程(版本455、460、470,亲测可用!!!)_第24张图片

  • 至于VS项目属性配置就不再详述了

    • 1.包含目录 include
    • 2.库目录 lib
    • 3.链接器-输入项:.lib名字

你可能感兴趣的:(#,Opencv,之,DNN,与,CUDA,#,模型部署,opencv,计算机视觉,人工智能)