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__)"