源碼編譯 OpenCV4.5.1 包含 CUDA 模塊


1. 下載源碼

分別下載源碼 opencv-4.5.1 和 opencv_contrib-4.5.1,放到您喜歡的目錄下。假設該目錄為 opencv 。
源碼解壓后的目錄結構如下:

/opencv
    /opencv-4.5.1           # opencv 源碼目錄
    /opencv_contrib-4.5.1   # opencv_contrib 源碼目錄

2. 安裝依賴

2.1 創建 conda 環境(可選)

# 創建 conda 環境
conda create --name py38 python==3.8

# 切換 conda 環境
conda activate py38

2.2 安裝 numpy

opencv 的 python 模塊依賴 numpy,需要首先安裝 numpy:

# 安裝 numpy
pip install numpy

2.3 安裝 cuda & cudnn

安裝 cuda 和 cudnn。參考 Nvidia 官方文檔即可,不再贅述。

2.4 安裝編譯工具 & 依賴庫

# 安裝編譯工具
sudo apt-get install build-essential cmake g++

# 圖片庫
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev

# gtk 庫
sudo apt-get install libgtk-3-dev

# ffmpeg 相關的庫
sudo apt-get install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev

sudo apt-get install libatlas-base-dev

sudo apt-get install libopenblas-dev libopenblas-base

sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libgphoto2-dev libavresample-dev

sudo apt install libgflags-dev

sudo apt install libdc1394-22-dev

注意:
不同環境下,上述依賴可能不一樣,需要根據報錯信息,自行安裝相應的依賴

3. 編譯 & 安裝

3.1 准備工作

# 切換 conda 環境
conda activate py38

# 創建目錄 opencv_build,用於存放編譯結果
mkdir opencv_build

# 進入 opencv_build 目錄。后續操作都在此目錄下執行
cd opencv_build

目錄結構如下:

/opencv
    /opencv-4.5.1           # opencv 源碼目錄
    /opencv_contrib-4.5.1   # opencv_contrib 源碼目錄
    /opencv_build           # opencv 編譯結果目錄

3.2 CMake 編譯

# 執行 cmake 
cmake -D CMAKE_BUILD_TYPE=RELEASE \
	-D CMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") \
	-D OPENCV_DNN_CUDA=ON \
	-D OPENCV_ENABLE_NONFREE=ON \
	-D OPENCV_GENERATE_PKGCONFIG=YES \
	-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.1/modules \
	-D ENABLE_FAST_MATH=1 \
	-D CUDA_FAST_MATH=1 \
	-D CUDA_ARCH_BIN=7.5 \
	-D WITH_CUDA=ON \
	-D WITH_CUDNN=ON \
	-D WITH_WEBP=OFF \
	-D WITH_CUBLAS=1 \
	-D WITH_VTK=OFF \
	-D BUILD_TESTS=OFF \
	-D BUILD_PERF_TESTS=OFF \
	-D BUILD_JAVA=OFF \
	-D BUILD_EXAMPLES=OFF \
	-D BUILD_opencv_python2=OFF \
	-D BUILD_opencv_python3=ON \
	-D HAVE_OPENCV_PYTHON3=ON \
	-D INSTALL_PYTHON_EXAMPLES=ON \
	-D PYTHON3_EXECUTABLE=$(which python3) \
	-D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
	-D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
	../opencv-4.5.1

配置項說明:

  • CMAKE_INSTALL_PREFIX: cmake 安裝路徑前綴
  • PYTHON3_EXECUTABLE: python3 可執行文件路徑
  • PYTHON3_INCLUDE_DIR: python3 include 文件夾
  • PYTHON3_PACKAGES_PATH: python3 包路徑
  • CUDA_ARCH_BIN: gpu 算力,參考:[https://developer.nvidia.com/zh-cn/cuda-gpus](https://developer.nvidia.com/zh-cn/cuda-gpus)

完整的編譯參數說明可以參考 OpenCV 官方文檔:https://docs.opencv.org/4.5.1/db/d05/tutorial_config_reference.html

特別注意:
CUDA_ARCH_BIN 配置項,必須和顯卡的算力相等,否則使用時會報錯。

3.3 編譯

# 執行 make, 使用 18 個線程編譯
make -j18

3.4 安裝

# 安裝
make install

3.5 驗證

python3 -c "import cv2; print(cv2.__version__)"

4. 參考


免責聲明!

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



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