Ubuntu 22.04 编译安装 OpenCV + CUDA 全流程
环境信息
| 项目 | 版本 |
|---|---|
| 系统 | Ubuntu 22.04 x86_64 |
| GPU | NVIDIA GeForce RTX 3060 Laptop (6GB) |
| 显卡驱动 | 595.71.05 |
| CUDA Toolkit | 12.6 / 13.0 |
| cuDNN | 9.22.0 (CUDA 12) |
| Python | 3.10.12 |
| GCC | 11.4.0 |
| CMake | 3.22.1 |
| 编译后 OpenCV | 4.13.0-dev |
第一步:确认环境
# 检查 GPU 和驱动
nvidia-smi
# 检查 CUDA Toolkit
ls /usr/local/cuda*
nvcc --version
# 检查 cuDNN
dpkg -l | grep cudnn
# 检查当前 OpenCV(如果已装)
python3 -c "import cv2; print(cv2.__version__)"
第二步:安装编译依赖
sudo apt-get update
sudo apt-get install -y \
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 \
python3-dev python3-numpy \
libtbb2 libtbb-dev \
libdc1394-22-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
第三步:克隆源码
注意: Gitee 镜像的 opencv_contrib 更新较慢,缺少 CUDA 12.4+ 兼容性修复,必须使用 GitHub 仓库。主仓库可以用 Gitee 加速。
# 主仓库(Gitee 镜像,拉取快)
git clone https://gitee.com/mirrors/opencv.git --depth 1 /home/cedar/opencv
# contrib 仓库(必须用 GitHub,Gitee 版本过旧会导致编译失败)
git clone https://github.com/opencv/opencv_contrib.git --depth 1 /home/cedar/opencv_contrib
为什么 contrib 必须用 GitHub?
CUDA 12.4 及以上版本中,cudev模块的blockReduce/blockReduceKeyVal函数需要使用 C++17 变参模板(variadic template)重载。Gitee 镜像最新的 contrib 4.9.0 只有旧的 10 元组硬编码版本,编译时会报如下错误:error: no instance of overloaded function "cv::cudev::blockReduce" matches the argument listGitHub 主分支已通过
#if (CUDART_VERSION < 12040)条件编译修复了此问题。
第四步:CMake 配置
mkdir -p /home/cedar/opencv/build
cd /home/cedar/opencv/build
cmake \
-D CMAKE_BUILD_TYPE
97




被折叠的 条评论
为什么被折叠?



