源码编译 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