日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

windows11编译OpenCV4.5.0 with CUDA(附注意事项)

發(fā)布時(shí)間:2024/3/12 windows 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows11编译OpenCV4.5.0 with CUDA(附注意事项) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

windows11編譯OpenCV4.5.0 with CUDA

從OpenCV4.2.0 版本開(kāi)始允許使用 Nvidia GPU 來(lái)加速推理。本文介紹最近使用windows11系統(tǒng)編譯帶CUDA的OpenCV4.5.0的過(guò)程。

  • 文中使用【特別注意:…】為大家標(biāo)識(shí)出容易出錯(cuò)的地方。
  • 安裝成功后,使用CPU與GPU調(diào)用yolov4模型進(jìn)行推理的耗時(shí)測(cè)試結(jié)果:
GPUCPU
4ms311ms
  • 從差距上看,還是值得花時(shí)間編譯一下的:)
  • 耗時(shí)測(cè)試環(huán)境:
    • 調(diào)用筆記本自帶攝像頭獲取視頻
    • Notebook GTX3080顯卡

1.準(zhǔn)備環(huán)境

1.1 下載OpenCV4.5.0

  • 編譯需要OpenCV4.5.0的源碼
  • 下載地址(3項(xiàng)可選):

    https://opencv.org/releases/
    https://github.com/opencv/opencv/releases/tag/4.5.0
    https://sourceforge.net/projects/opencvlibrary/files/4.5.0/opencv-4.5.0-vc14_vc15.exe/download

  • 下載完成后是一個(gè)exe程序,雙擊即可解壓,解壓后:
    • source文件夾就是源碼
    • build文件夾是編譯好的不帶CUDA加速的OpenCV4.5.0(本文不使用)

1.2 下載OpenCV4.5.0 contrib

  • Contrib Modules是OpenCV的擴(kuò)展模塊,包含了很多用于實(shí)現(xiàn)特定算法
  • 編譯OpenCV需要用到contirb模塊
  • 特別注意:務(wù)必下載與源碼對(duì)應(yīng)版本的contrib模塊
  • 下載地址(第1個(gè)為官方下載地址,第2個(gè)為國(guó)內(nèi)某同學(xué)搭建的下載庫(kù),速度較快):

    https://github.com/opencv/opencv_contrib/tags
    https://www.raoyunsoft.com/opencv/opencv_contrib/opencv_contrib-4.5.0.zip

1.3 準(zhǔn)備.cache文件

  • 編譯過(guò)程中需要聯(lián)網(wǎng)下載一些依賴庫(kù),并存放于sourc.cache文件夾中
  • 特別注意:因要連到外網(wǎng),因此速度比較慢,有時(shí)斷網(wǎng)造成編譯失敗,所以可以提前準(zhǔn)備好這些文件
  • OpenCV4.5.0的.cache文件下載地址:

    https://download.csdn.net/download/iracer/85695997

  • 使用方法:
    • 將.cache文件夾拷貝到source文件夾下,與原.cache文件夾合并

1.4 安裝Visual Studio 2019

  • 安裝CUDA需要vs,這里選擇vs2019
  • 安裝步提要:
  • Download Visual Studio 2019 Community Edition
  • Select Desktop Development with C++ option and click on install

1.5 安裝CUDA和cuDNN

  • NVIDIA官方指南:

    https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#install-windows

  • 本次在windows11上安裝的CUDA和cuDNN版本為:
  • CUDA 11.3:cuda_11.3.1_465.89_win10.exe
  • duDNN 8.4:cudnn-windows-x86_64-8.4.0.27_cuda11.6-archive.zip
  • 特別注意:zlib庫(kù)需要下載并添加到系統(tǒng)環(huán)境變量path中,因?yàn)閏dDNN需要調(diào)用該庫(kù)。
  • zlib庫(kù)下載地址:

    www.winimage.com/zLibDll/zlib123dllx64.zip
    下載完成后解壓zip文件,并將zlibwapi.dll所在目錄添加到系統(tǒng)環(huán)境變量path

  • 查看CUDA安裝結(jié)果:
C:\Users\irace>nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Mon_May__3_19:41:42_Pacific_Daylight_Time_2021 Cuda compilation tools, release 11.3, V11.3.109 Build cuda_11.3.r11.3/compiler.29920130_0

1.6 安裝CMake

  • 本次是用的是3.22版本,3.19以上版本應(yīng)該都可以(未逐一測(cè)試)
  • 下載地址:

    https://github.com/Kitware/CMake/releases/download/v3.22.5/cmake-3.22.5-windows-x86_64.msi

2. 編譯

2.1 CMake生成解決方案

  • 雙擊解壓OpenCV4.5.0.exe,解壓后的source目錄即OpenCV4.5.0的源碼

  • 解壓opencv_contrib-4.5.0

  • 新建一個(gè)編譯目錄

    D:\opencv\oepncv4.5.0cuda\build

  • 打開(kāi)CMake

  • 配置source code:

    D:/opencv/opencv4.5.0/sources

  • 配置目標(biāo)目錄:

    D:\opencv\oepncv4.5.0cuda\build

  • 第1次點(diǎn)擊[Configure]

  • 彈出窗口選擇vs2019作為編譯器:

    Visual Studio 16 2019

  • generate平臺(tái)選擇x64

  • 第2次點(diǎn)擊[Configure]后,搜cuda帶cuda的都勾選,

    • BUILD_CUDA_STUBS
    • BUILD_opencv_cudaarithm
    • BUILD_opencv_cudabgsegm
    • BUILD_opencv_cudacodec
    • BUILD_opencv_cudafeatures2d
    • BUILD_opencv_cudafilters
    • BUILD_opencv_cudaimgproc
    • BUILD_opencv_cudalegacy
    • BUILD_opencv_cudaobjdetect
    • BUILD_opencv_cudaoptflow
    • BUILD_opencv_cudastereo
    • BUILD_opencv_cudawarping
    • 除此之外此外以下兩項(xiàng)數(shù)學(xué)加速選項(xiàng)也勾選:
    • CUDA_FAST_MATH
    • ENABLE_FAST_MATH
    • CMake界面上Search欄搜modules,設(shè)置contrib模塊路徑

    D:\opencv\oepncv4.5.0cuda\opencv_contrib-4.5.0\modules

  • 第3次點(diǎn)擊[Configure],完成后,再次搜索cuda,配置CUDA_ARCH_BIN中將顯卡的算力內(nèi)容改成自己顯卡的算力,t如下網(wǎng)址查詢自己顯卡的算力,我保留了7.5;8.0;8.6

    • 查詢顯卡算力鏈接

    GeForce 筆記本

    GPUCompute Capability
    GeForce RTX 30808.6
    GeForce RTX 30708.6
    GeForce RTX 30608.6
    GeForce RTX 3050 Ti8.6
    GeForce RTX 30508.6
    Geforce RTX 20807.5
    Geforce RTX 20707.5
    Geforce RTX 20607.5
    GeForce GTX 10806.1
    GeForce GTX 10706.1
    GeForce GTX 10606.1

    GeForce and TITAN 臺(tái)式機(jī)

    GPUCompute Capability
    Geforce RTX 3060 Ti8.6
    Geforce RTX 30608.6
    GeForce RTX 30908.6
    GeForce RTX 30808.6
    GeForce RTX 30708.6
    GeForce GTX 1650 Ti7.5
    NVIDIA TITAN RTX7.5
    Geforce RTX 2080 Ti7.5
    Geforce RTX 20807.5
    Geforce RTX 20707.5
    Geforce RTX 20607.5
    NVIDIA TITAN V7.0
  • 搜索并勾選

    BUILD_opencv_world,可生成一個(gè)整的dll方便使用

    OPENCV_ENABLE_NONFREF

  • 解壓.cache.rar,將.cache目錄拷貝到source目錄:

    D:\opencv\oepncv4.5.0\source\.cache >![將下載的.cache目錄與source中的.cache目錄合并](https://img-blog.csdnimg.cn/

  • 第4次點(diǎn)擊[Configure]

  • 完成后,點(diǎn)擊[Generate],完美生成:


    配置完成后CMake log中顯示找到了CUDA和cuDNN:

    NVIDIA CUDA: YES (ver 11.3, CUFFT CUBLAS FAST_MATH)

    NVIDIA GPU arch: 75 80 86

    NVIDIA PTX archs:

    cuDNN: YES (ver 8.4.0)

  • 點(diǎn)擊[Open Project],會(huì)自動(dòng)打開(kāi)vs2019,開(kāi)始編譯

2.2 VS2019編譯OpenCV

  • 使用VS2019打開(kāi)剛剛編譯工程后,等待左下角顯示的項(xiàng)全部加載完畢才可以繼續(xù)操作

  • 選擇Release x64版本

  • 找到解決方案資源管理器中的“CmakeTargets”下的“ALL_BUILD”,右鍵→“生成”,然后開(kāi)始漫長(zhǎng)的等待……

  • 解決方案資源管理器—>CMakeTargets—>INSTALL—>生成”然后又是等,好在這次時(shí)間很短。完成后你的build文件夾中會(huì)出現(xiàn)一個(gè)install文件夾,這就是完成了。

2.3 生成文件

  • 生成完成后會(huì)出現(xiàn)如下文件夾

    D:\opencv\oepncv4.5.0cuda\build\install

  • build/install目錄的目錄結(jié)構(gòu)(部分)
    ├─etc
    ├─include
    │ └─opencv2
    │ ├─core
    │ ├─cudalegacy
    │ ├─cudev
    │ ├─datasets
    │ ├─dnn
    │ ├─face
    │ ├─features2d
    └─x64
    └─vc16
    ├─bin
    └─lib

  • tips:在當(dāng)前目錄中運(yùn)行cmd,使用tree命令,即可生成目錄樹(shù)

D:\opencv\oepncv4.5.0cuda\build\install>tree

3. 測(cè)試

3.1 配置OpenCV with cuda

  • 配置OpenCV4.5.0cuda,與一般OpenCV的配置方法一致,可參考:
  • Win7系統(tǒng)Visual Studio 2013配置OpenCV3.1圖文詳解

3.2 YOLOv4 示例程序

  • 測(cè)試程序可以直接用《OpenCV4機(jī)器學(xué)習(xí)算法原理與編程實(shí)戰(zhàn)》書(shū)中的代碼(部分):
#include<opencv2\opencv.hpp> #include<opencv2\dnn.hpp> #include<fstream> #include<iostream>using namespace std; // 檢測(cè)結(jié)果后處理 void postProcess(cv::dnn::Net& net,cv::Mat& frame,const vector<cv::Mat>& outs,vector<cv::Rect>& boxes,vector<int>& classIds,vector<int>& indices,double confThreshold,double nmsThreshold );// 檢測(cè)繪制結(jié)果 void drawPred(cv::Mat& frame,vector<cv::Rect>& boxes,vector<int>& classIds,vector<int>& indices,vector<string>& classNamesVec);// 程序設(shè)置 bool USE_IMAGE = false; // true: 測(cè)試圖像; false: 測(cè)試視頻 bool USE_YOLOv4 = true; // true: YOLOv4; false: YOLOv4_tiny bool USE_CUDA = true; // true: GPU, false: CPUfloat confidenceThreshold = 0.3; // 置信度設(shè)置 float nmsThreshold = 0.2; // 置信MNS門限int main() {// [1]模型文件路徑設(shè)置cv::String model, config;if (USE_YOLOv4){model = "D:/models/yolov4/yolov4.weights"; // 模型權(quán)重文件config = "D:/models/yolov4/yolov4.cfg"; // 模型配置文件 }else // use yolov4-tiny{model = "D:/models/yolov4/yolov4-tiny.weights";config = "D:/models/yolov4/yolov4-tiny.cfg";}cv::String framework = "Darknet"; // 深度學(xué)習(xí)框架cv::String label_file = "D:/models/yolov4/coco.names";// 類別標(biāo)簽文件//[2] 加載類別ifstream classNamesFile(label_file);vector<string> classNamesVec;if (classNamesFile.is_open()){string className = "";while (std::getline(classNamesFile, className)){classNamesVec.push_back(className);}}// [3]載入模型cv::dnn::Net net = cv::dnn::readNet(config, model, framework);if (USE_CUDA){net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);}else{ net.setPreferableTarget(cv::dnn::DNN_TARGET_OPENCL);net.setPreferableBackend(cv::dnn::DNN_BACKEND_OPENCV);}// ...}

4. 相關(guān)鏈接

  • OpenCV4機(jī)器學(xué)習(xí)算法原理與編程實(shí)戰(zhàn)(附部分模型下載地址)
  • 本文更新鏈接
  • 轉(zhuǎn)載請(qǐng)注明出處。

總結(jié)

以上是生活随笔為你收集整理的windows11编译OpenCV4.5.0 with CUDA(附注意事项)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。