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