最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenCV 4.7 + CUDA 11.2 + Python 3.9.x 環(huán)境搭建的實(shí)現(xiàn)步驟

 更新時(shí)間:2026年04月15日 09:33:59   作者:fundoit  
本文詳細(xì)介紹了在Windows系統(tǒng)下編譯支持CUDA的OpenCV-Python環(huán)境的完整流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

目錄

  1. 準(zhǔn)備工作
  2. CMake 編譯
  3. VS 編譯
  4. 驗(yàn)證
  5. 常見問題解決
  6. 附錄:CMake 配置日志

OpenCV 是一個(gè)開源計(jì)算機(jī)視覺庫,提供了許多圖像處理和計(jì)算機(jī)視覺算法的實(shí)現(xiàn)。它支持多種編程語言,包括 C++、Python、Java 等。

OpenCV-Python 是 OpenCV 的 Python 接口,它提供了 Python 開發(fā)者使用 OpenCV 庫的便利性。它可以在 Python 中使用 OpenCV 的所有功能,并且可以與其他 Python 庫集成,如 NumPy、SciPy 等。

OpenCV 中提供了 GPU 模塊,可以用來加速圖像處理的相關(guān)運(yùn)算。OpenCV 的 GPU 模塊是使用 CUDA 編寫的。

OpenCV 官方關(guān)于 CUDA 的說明及范例:https://opencv.org/

Ⅰ、準(zhǔn)備工作

硬件環(huán)境

  • 需要帶 NVIDIA 顯卡(N 卡)

軟件環(huán)境

  1. 下載 OpenCV 源碼:opencv-4.7.0.tar.gz
  2. 下載 OpenCV Contrib 源碼:opencv_contrib-4.7.0.zip

目錄結(jié)構(gòu)說明:
把代碼解壓到指定目錄(例如 E:\code\external\opencv47)。
重要提示:源代碼目錄下必須事先拷貝好 .cache 文件夾,以避免編譯時(shí)下載失敗。

  1. 安裝 CMake:推薦版本 cmake-3.26.0-windows-x86_64.msi。
  2. 安裝 Anaconda:推薦 Anaconda3-2022.10-Windows-x86_64.exe。
  3. 安裝 CUDA 開發(fā)工具包:
    • 本人親測了不同的 CUDA SDK 版本,編譯結(jié)果如下表:
CUDA 版本OpenCV 4.7.0OpenCV 4.10.0OpenCV 4.12.0
cuda-v11.2 & cudnn8.1.0???
cuda-v12.4 & cudnn8.9.7???
cuda-v12.6 & cudnn8.9.7???
  1. 安裝 Visual Studio 2019。

Ⅱ、CMake 編譯

1. 打開 cmake-gui

按照教程安裝好 CUDA 和 Anaconda 后,打開 CMake 界面,設(shè)置 OpenCV 源碼路徑(Source Code)和構(gòu)建路徑(Build)。

注意:

  • 如果要編譯 Anaconda 內(nèi)非默認(rèn)虛擬環(huán)境的 Python,建議先暫時(shí)重命名 base 環(huán)境下的 python.exe 和 libs/python312.lib,防止 CMake 錯(cuò)誤識(shí)別。
  • 如果本地安裝了多個(gè)版本的 CUDA SDK,需要先將環(huán)境變量 CUDA_PATH 等設(shè)置成當(dāng)前要編譯的 CUDA 版本。

第一次點(diǎn)擊 Configure,選擇 Visual Studio 16 2019 和 x64 架構(gòu),點(diǎn)擊 Finish。第一次編譯完成后,進(jìn)行以下配置:

  1. 編譯 World 模塊:在 Search 框搜 world,勾選 BUILD_opencv_world。這將把所有 OpenCV 庫編譯在一起,無需單獨(dú)添加每個(gè)小模塊。
  2. 啟用非自由算法:在 Search 框搜 NON,勾選 OPENCV_ENABLE_NONFREE。

2. 設(shè)置 Python 路徑

此步驟旨在將 CUDA 版本的 OpenCV 安裝到 Python 環(huán)境中。

  1. 構(gòu)建 Python 綁定:在 Search 框搜 BUILD,勾選 BUILD_opencv_python3(若搜索不到需手動(dòng)添加)。

環(huán)境確認(rèn):
確認(rèn)當(dāng)前使用的 Python 環(huán)境(如 Anaconda base 或自定義虛擬環(huán)境)已安裝 numpy(編譯必需):

conda list
pip3 install numpy

手動(dòng)設(shè)置路徑:
由于虛擬環(huán)境可能未添加到系統(tǒng)環(huán)境變量,CMake 可能無法自動(dòng)找到 numpy 頭文件等路徑。需在 CMake 界面手動(dòng)設(shè)置以下變量(以 Python 3.11 和 3.8 為例):

  • Python 3.11 示例:

    • PYTHON3_EXECUTABLE: D:/tools/anaconda3/envs/py3_11/python.exe
    • PYTHON3_INCLUDE_DIR: D:/tools/anaconda3/envs/py3_11/include
    • PYTHON3_LIBRARY: D:/tools/anaconda3/envs/py3_11/libs/python311.lib
    • PYTHON3_NUMPY_INCLUDE_DIRS: D:/tools/anaconda3/envs/py3_11/Lib/site-packages/numpy/core/include (低版本 numpy) 或 .../numpy/_core/include (高版本 numpy)
    • PYTHON3_PACKAGES_PATH: D:/tools/anaconda3/envs/py3_11/Lib/site-packages
  • Python 3.8 示例:

    • PYTHON3_EXECUTABLE: D:/tools/anaconda3/envs/py3_8/python.exe
    • PYTHON3_INCLUDE_DIR: D:/tools/anaconda3/envs/py3_8/include
    • PYTHON3_LIBRARY: D:/tools/anaconda3/envs/py3_8/libs/python38.lib
    • PYTHON3_NUMPY_INCLUDE_DIRS: D:/tools/anaconda3/envs/py3_8/Lib/site-packages/numpy/core/include
    • PYTHON3_PACKAGES_PATH: D:/tools/anaconda3/envs/py3_8/Lib/site-packages

3. 設(shè)置 CUDA

  1. 添加 Contrib 模塊:在 Search 框搜 MODULES,在 OPENCV_EXTRA_MODULES_PATH 項(xiàng)中,添加 opencv_contrib 源碼中的 modules 目錄。

    • 路徑示例:E:/code/external/opencv_contrib-4.7.0/modules
    • 注意:必須使用正斜杠 / 或雙反斜杠 \\。若不設(shè)置,會(huì)報(bào)錯(cuò):CUDA: OpenCV requires enabled 'cudev' module from 'opencv_contrib'。
  2. 啟用 CUDA 支持:在 Search 框內(nèi)輸入 CUDA,勾選以下兩項(xiàng):

    • WITH_CUDA
    • OPENCV_DNN_CUDA
    • (BUILD_CUDA_STUBS 可選,通常不勾選)

    關(guān)于 cuDNN:如果忘記將 cuDNN 解壓到 CUDA SDK 目錄內(nèi),解壓后必須在 CMake 中點(diǎn)擊 Delete Cache 然后重新 Configure,否則會(huì)報(bào)找不到 cuDNN。

    關(guān)于 Nvidia Video Codec SDK:

    • 若不需要視頻編解碼功能,可在 CMake 中取消勾選 WITH_NVCUVID 與 WITH_NVCUVENC。
    • 若需要,需下載 Nvidia Video Codec SDK,解壓后將 Lib 和 Interface 中的文件分別復(fù)制到 CUDA Toolkit 的 lib 和 include 目錄中。

    設(shè)置完成后,再次點(diǎn)擊 Configure,直到下方日志顯示 Configure done。

  3. 數(shù)學(xué)優(yōu)化:搜索框輸入 fast,勾選 ENABLE_FAST_MATH 和 CUDA_FAST_MATH。

    • 注:啟用此選項(xiàng)可能會(huì)犧牲少量精度以換取更快的浮點(diǎn)運(yùn)算速度。
  4. 設(shè)置顯卡算力:搜索框輸入 cuda,找到 CUDA_ARCH_BIN。

    • 根據(jù)顯卡型號(hào)修改算力值。例如 GTX 1060 對(duì)應(yīng)的算力為 6.1。
    • 刪除其他不需要的算力版本,僅保留 6.1(或多張顯卡對(duì)應(yīng)的算力值,用空格分隔)。

4. 設(shè)置 ICONV 庫

確保相關(guān)配置無誤后,點(diǎn)擊 Generate 開始生成工程,直到出現(xiàn) Generating done!。

5. 常見警告和錯(cuò)誤處理

(1) 模塊下載失敗

  • 現(xiàn)象:Configure 時(shí)在 .cache 文件夾下生成的文件大小為 0kb,或 CMake 輸出下載失敗警告。
  • 原因:網(wǎng)絡(luò)問題導(dǎo)致無法從 GitHub 等源下載依賴文件。
  • 解決:
    1. 查看 D:\build\opencv47\CMakeDownloadLog.txt 獲取失敗文件的下載鏈接。
    2. 手動(dòng)下載這些文件。
    3. 將下載的文件重命名為 .cache 文件夾中對(duì)應(yīng)的文件名并覆蓋。
    4. 推薦:直接使用作者整理好的包含完整 .cache 文件的源碼包。
    • 注意:不要注釋掉 CMakeLists.txt 中的下載語句,否則不會(huì)生成必要的緩存文件結(jié)構(gòu)。應(yīng)注釋或刪除的是“清理緩存”相關(guān)的語句(如果有)。

(2) 警告:OPENCV_GENERATE_SETUPVARS

  • 解決:在搜索框中輸入 OPENCV_GENERATE_SETUPVARS,去除勾選,重新 Configure。

(3) 路徑格式錯(cuò)誤

  • 現(xiàn)象:Configure 報(bào)錯(cuò),提示 OPENCV_EXTRA_MODULES_PATH 路徑錯(cuò)誤。
  • 解決:確保路徑使用正斜杠 / 或雙反斜杠 \\,例如 E:/code/external/opencv_contrib47/modules。

(4) Python 未被正確識(shí)別

  • 現(xiàn)象:CMake 未能找到正確的 Python 環(huán)境。
  • 解決:臨時(shí)重命名 Anaconda base 目錄下的 python.exe 和 libs/python3xx.lib,讓 CMake 在首次 Configure 時(shí)忽略它們,然后手動(dòng)指定虛擬環(huán)境的路徑。

(5) cuDNN 版本不匹配

  • 現(xiàn)象:報(bào)錯(cuò)提示 cuDNN 版本與 CUDA 不兼容。
  • 解決:清除 CMake 緩存并重新 Configure。如果修改了環(huán)境變量,需重啟 CMake GUI 以生效。

Ⅲ、VS 編譯

1. 編譯源碼

  1. 點(diǎn)擊 CMake 中的 Open Project,啟動(dòng) Visual Studio 2019 加載生成的解決方案。
  2. 等待加載完畢,頂部工具欄選擇 Release 和 x64。
  3. 在“解決方案資源管理器”中,找到 CMakeTargets -> ALL_BUILD。
  4. 右鍵點(diǎn)擊 ALL_BUILD -> “生成”。
  5. 編譯過程可能需要一小時(shí)左右,直到輸出顯示全部成功。
    • 檢查:確保在 bindings 目錄下生成了 opencv_python3 項(xiàng)目,否則無法在 Python 中使用 CUDA 加速。

2. 安裝庫到 Python

  1. 在“解決方案資源管理器”中,找到 CMakeTargets -> INSTALL。
  2. 右鍵點(diǎn)擊 INSTALL -> “生成”。
  3. 等待結(jié)束后:
    • 在構(gòu)建目錄的 lib\python3\Release 下可看到 cv2.cp39-win_amd64.pyd (版本號(hào)可能不同)。
    • 在 Python 環(huán)境的 Lib\site-packages 目錄下(如 D:\rady\anaconda3\Lib\site-packages),應(yīng)能看到 cv2 文件夾及相關(guān)文件。

至此,Python 環(huán)境的 GPU 版本 OpenCV 已安裝成功。

3. 編譯報(bào)錯(cuò)解決

  • 錯(cuò)誤:無法解析的外部符號(hào) cv::xfeatures2d::VGG::getDefaultName
  • 原因:源代碼目錄下的 .cache 文件夾內(nèi)文件缺失或損壞(通常因網(wǎng)絡(luò)下載失敗導(dǎo)致)。
  • 解決:將事先下載好的完整 .cache 文件夾覆蓋到源碼目錄 E:\code\external\opencv47 下。

Ⅳ、驗(yàn)證

驗(yàn)證方法

方法一:命令行驗(yàn)證
打開 Anaconda Prompt 或 CMD,運(yùn)行以下代碼:

import cv2
print(cv2.__version__)
print(cv2.cuda.getCudaEnabledDeviceCount())

或者一行命令:

python -c "import cv2;print(cv2.__version__);print(cv2.cuda.getCudaEnabledDeviceCount());"

如果輸出了版本號(hào)且設(shè)備計(jì)數(shù)大于 0,則安裝成功。

方法二:Jupyter Notebook 驗(yàn)證
在 Jupyter Notebook 中新建單元格,運(yùn)行上述 Python 代碼進(jìn)行驗(yàn)證。

驗(yàn)證失敗常見問題

(1) import cv2 報(bào)錯(cuò)(轉(zhuǎn)義字符問題)

  • 現(xiàn)象:導(dǎo)入時(shí)報(bào)錯(cuò),路徑相關(guān)錯(cuò)誤。
  • 原因:config.py 文件中使用了 Windows 反斜杠 \ 作為路徑分隔符,導(dǎo)致轉(zhuǎn)義錯(cuò)誤。
  • 解決:打開 config.py 和 config-3.xx.py 文件(通常位于 site-packages/cv2 目錄下),將所有反斜杠 \ 改為正斜杠 /。

(2) Python 版本沖突

  • 現(xiàn)象:本地 Python 版本與虛擬環(huán)境目標(biāo)版本沖突。
  • 解決:
    1. 設(shè)置環(huán)境變量 PYTHON_EXECUTABLE3 指向虛擬環(huán)境內(nèi)的 python.exe。
    2. 重啟資源管理器 (explorer.exe) 或重啟電腦。
    3. 檢查注冊(cè)表項(xiàng):
      • 計(jì)算機(jī)\HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.8\PythonPath
      • 計(jì)算機(jī)\HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\${_CURRENT_VERSION}\InstallPath

(3) 多次 import 報(bào)錯(cuò)

  • 現(xiàn)象:首次 import 失敗,修改配置后仍需重啟 Shell。
  • 解決:修改配置文件后,務(wù)必完全退出 Python Shell(運(yùn)行 quit())并重新進(jìn)入,或直接重啟 IDE/終端。

(4) 多虛擬環(huán)境與多 CUDA 版本

  • 若存在多個(gè)虛擬環(huán)境對(duì)應(yīng)不同 CUDA 版本,需確保當(dāng)前激活的環(huán)境變量(特別是 CUDA_PATH)與編譯時(shí)使用的版本一致,或在切換環(huán)境時(shí)動(dòng)態(tài)調(diào)整。

附錄:CMake 3.26 配置日志記錄 (摘要)

Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.17134.
Detected processor: AMD64
CMAKE_VERSION: 3.26.0
CMAKE_SYSTEM: Windows-10.0.17134
CUDA detected: 11.2
CUDA: Using CUDA_ARCH_BIN=6.1
CUDA NVCC target flags: -gencode;arch=compute_61,code=sm_61;-D_FORCE_INLINES
...
General configuration for OpenCV 4.7.0 =====================================
  Version control:               703f139
  Extra modules:
    Location (extra):            D:/code/external/opencv_contrib47/modules
  Platform:
    Host:                        Windows 10.0.17134 AMD64
    CMake:                       3.26.0
    CMake generator:             Visual Studio 16 2019
    MSVC:                        1929
  NVIDIA CUDA:                   YES (ver 11.2, CUFFT CUBLAS FAST_MATH)
    NVIDIA GPU arch:             61
  cuDNN:                         YES (ver 8.1.0)
  Python 3:
    Interpreter:                 D:/rady/anaconda3/python.exe (ver 3.9.13)
    Libraries:                   D:/rady/anaconda3/libs/python39.lib
    numpy:                       .../numpy/core/include
    install path:                D:/rady/anaconda3/Lib/site-packages/cv2/python-3.9
  OpenCV modules:
    To be built:                 aruco barcode ... world xfeatures2d ...
    Non-free algorithms:         YES
-----------------------------------------------------------------
Configuring done (33.5s)
Generating done (41.5s)

到此這篇關(guān)于OpenCV 4.7 + CUDA 11.2 + Python 3.9.x 環(huán)境搭建的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)OpenCV CUDA Python環(huán)境搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python設(shè)計(jì)一個(gè)代碼統(tǒng)計(jì)工具

    使用Python設(shè)計(jì)一個(gè)代碼統(tǒng)計(jì)工具

    這篇文章主要介紹了使用Python設(shè)計(jì)一個(gè)代碼統(tǒng)計(jì)工具的相關(guān)資料,包括文件個(gè)數(shù),代碼行數(shù),注釋行數(shù),空行行數(shù)。感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-04-04
  • Python?Pandas中布爾索引的用法詳解

    Python?Pandas中布爾索引的用法詳解

    布爾索引是一種使用?DataFrame?中數(shù)據(jù)的實(shí)際值的索引。本文將通過一些示例為大家詳細(xì)講講Python中布爾索引的用法,需要的可以參考一下
    2022-08-08
  • Python3.6.2調(diào)用ffmpeg的方法

    Python3.6.2調(diào)用ffmpeg的方法

    今天小編就為大家分享一篇Python3.6.2調(diào)用ffmpeg的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python __slots__的使用方法

    Python __slots__的使用方法

    這篇文章主要介紹了Python __slots__的使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python?+?Selenium?實(shí)現(xiàn)模擬登錄jd實(shí)例分享

    Python?+?Selenium?實(shí)現(xiàn)模擬登錄jd實(shí)例分享

    這篇文章主要介紹了Python?+?Selenium?實(shí)現(xiàn)模擬登錄jd實(shí)例分享的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • python批量檢查兩個(gè)對(duì)應(yīng)的txt文件的行數(shù)是否一致的實(shí)例代碼

    python批量檢查兩個(gè)對(duì)應(yīng)的txt文件的行數(shù)是否一致的實(shí)例代碼

    這篇文章主要介紹了python批量檢查兩個(gè)對(duì)應(yīng)的txt文件的行數(shù)是否一致,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • python3讓print輸出不換行的方法

    python3讓print輸出不換行的方法

    在本篇內(nèi)容里小編給大家整理的是關(guān)于python3讓print輸出不換行的方法,有需要的朋友們可以學(xué)習(xí)參考下。
    2020-08-08
  • python代碼如何轉(zhuǎn)jar包

    python代碼如何轉(zhuǎn)jar包

    這篇文章主要介紹了python代碼如何轉(zhuǎn)jar包問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Python prettytable模塊應(yīng)用詳解

    Python prettytable模塊應(yīng)用詳解

    PrettyTable 是python中的一個(gè)第三方庫,可用來生成美觀的ASCII格式的表格,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-09-09
  • Windows下安裝python2.7及科學(xué)計(jì)算套裝

    Windows下安裝python2.7及科學(xué)計(jì)算套裝

    這篇文章主要向大家介紹的是在windows系統(tǒng)下安裝python 2.7以及numpy安裝、six安裝、dateutil安裝、pyparsing安裝、matplotlib安裝和scipy安裝的方法,分享給大家,需要的小伙伴可以參考下,相對(duì)來說,windows下的安裝還是比較簡單的。
    2015-03-03

最新評(píng)論

新兴县| 福建省| 彭阳县| 蓬安县| 临高县| 田阳县| 韶山市| 清丰县| 连城县| 娄底市| 万安县| 方城县| 开封县| 金湖县| 瑞安市| 唐海县| 清河县| 诸城市| 庆云县| 林口县| 根河市| 岗巴县| 河池市| 泰州市| 万荣县| 景东| 微博| 宜黄县| 睢宁县| 彩票| 公安县| 桦川县| 拉孜县| 宁城县| 鄯善县| 鄂州市| 秦安县| 南召县| 贵定县| 东海县| 宁陵县|