前提條件是安裝好了cuda和cudnn
點擊下載:
opencv_contrib4.5.0
opencv 4.5.0
解壓重命名后
進入opencv目錄,創建build目錄
“CUDA_ARCH_BIN= ?” 這里要根據顯卡查詢一下,我的cuda是11,顯卡1650,所以是7.5
查詢方法1:
查詢鏈接:https://developer.nvidia.com/cuda-gpus
查詢方法2:
import torchif torch.cuda.is_available():major, minor = torch.cuda.get_device_capability()arch_bin = f"{major}.{minor}"print(arch_bin)
else:print("CUDA is not available.")
安裝依賴:
apt-get update
apt-get install build-essential cmake git pkg-config libgtk-3-dev \libavcodec-dev libavformat-dev libswscale-dev \libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev \libpng-dev libtiff-dev gfortran openexr \libatlas-base-dev \libtbb2 libtbb-dev libdc1394-22-dev libopenblas-dev \liblapacke-dev libhdf5-dev libprotobuf-dev protobuf-compiler
注意路徑更改:
cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/usr/local \-D WITH_TBB=ON \-D BUILD_TBB=ON \-D ENABLE_FAST_MATH=1 \-D CUDA_FAST_MATH=1 \-D WITH_CUBLAS=1 \-D WITH_V4L=ON \-D WITH_LIBV4L=ON \-D WITH_CUDA=ON \-D WITH_CUDNN=ON \-D WITH_CUDEV=ON \-D WITH_GTK_2_X=ON \-D WITH_NVCUVID=ON \-D CUDA_ARCH_BIN=7.5 \-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \-D WITH_OPENGL=ON \-D WITH_FFMPEG=ON \-D OPENCV_GENERATE_PKGCONFIG=YES \..
踩坑1:
認真觀察會發現
打開看到的就是未下載的文件,需要下載后移動到對應位置。
壓縮文件還能科學上網手動下載,但是.i文件我不知道怎么下載,因為按照網頁訪問會直接列出內容,我復制后,按照上面給的文件進行保存,又來一遍發現還是提示我未下載。最后是使用別人下載好的 .cache 文件,才編譯成功的。
如果不缺文件的話就沒有這個sh腳本。
踩坑2:
沒加環境變量
使用方法二就成功了。
# 方法一
# 臨時生效(僅當前終端)
# bash
# 復制
# # 假設庫路徑為 /usr/local/lib
# export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH#方法二
# 永久生效
# bash
# 復制
# # 創建配置文件
# sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'# # 更新動態鏈接器緩存
# sudo ldconfig
開始編譯:
make -j8
安裝
make install
創建配置文件
sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
更新動態鏈接器緩存
ldconfig