Opencv 4.3(CUDA11 ) 編譯踩坑記錄


前言

OpenCV接觸也有六七年了,沒想到還能折在這... 組內新配的服務器,打算編譯cuda版本opencv,花了一天才全部搞定.....


一、 CUDA_nppicom_LIBRARY are used in this project, but they are set to NOTFOUND

解決辦法

具體見上一篇文章Opencv-GPU 編譯錯誤 CUDA_nppicom_LIBRARY (ADVANCED) 未定義

二、 nvcc fatal : Unsupported gpu architecture 'compute_86'

查詢官網,3080顯卡的算力是8.6,設置8.6並沒有問題. 機器的CUDA是用apt命令安裝的,親測確實是這個導致。

解決辦法

  1. 卸載
    執行如下命令
sudo apt-get autoremove  nvidia-cuda-toolkit nvidia*
  1. 從官網下載CUDA包,安裝即可。

三、 CMake Error: Cannot determine link language for target "ade".

如圖,應該是下載python-ide失敗。

解決辦法

這里手動到github頁面(https://github.com/opencv/ade/releases)下載到本地,然后在opencv根目錄/modules/gapi/cmake/DownloadADE.cmake里更改ADE_root為本地路徑。具體如圖:

四、 fatal error: nvcuvid.h: No such file or directory

這個頭文件在cuda10 以后就被棄了,所以即使裝完CUDA也缺失。

解決辦法

可以從NVIDIA下載NVIDIA Video Codec SDK 獲取, 然后放入系統的/usr/includes路徑。具體文件如圖:

五、/usr/bin/ld: cannot find -ltrue


這個問題就絕了,缺少true庫,但是找了半天,並沒有聽說過libtrue.so這個庫...
受到issusBuild opencv with cuda error : /usr/bin/ld: cannot find -ltrue #19794啟發,這個問題是-D CUDA_nppicom_LIBRARY=true導致的,這個變量由於版本變動未定義,所以我們加了這一句。但是true導致在鏈接庫時導致找不到。

解決辦法

抖機靈隨意找了一個系統肯定有的庫stdc++,把原來的-D CUDA_nppicom_LIBRARY=true 改成-D CUDA_nppicom_LIBRARY=stdc++ 大功告成!

六、將編譯的Opencv安裝到Anacodna虛擬環境

在編譯通過后,可以修改cmake命令,使得安裝二進制文件到指定的python環境文件目錄。

  1. 激活虛擬環境source activate 環境名稱,主要是為了獲取虛擬環境的路徑,如果知道可以直接替換;
  2. OPENCV_PREFIX=$(python -c "import sys; print(sys.prefix)")
  3. cmake -DCMAKE_INSTALL_PREFIX=${OPENCV_PREFIX} .. && make install


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM