You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu 20.04编译带CUDA支持的OpenCV实现YOLO Python GPU加速

问题描述

我是OpenCV新手,希望获取在Ubuntu 20.04编译带CUDA支持的最新版本OpenCV的指导,以便在Python中通过GPU而非CPU运行YOLO。

经过大量调研,我未能找到在Ubuntu 20.04编译带CUDA支持的OpenCV,并配置环境使其在Python中可用的清晰、直接步骤。我知道可直接安装Python版OpenCV库,但它未包含我所需的CUDA模块。

我的环境

  • 系统:Ubuntu 20.04
  • nvcc --version输出:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Mar_28_02:18:24_PDT_2024
Cuda compilation tools, release 12.4, V12.4.131
Build cuda_12.4.r12.4/compiler.34097967_0
  • nvidia-smi输出:
Tue Apr 30 18:25:09 2024       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 3050 ...    Off |   00000000:01:00.0 Off |                  N/A |
| N/A   43C    P3             N/A /   35W |      12MiB /   4096MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                          
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A      2118      G   /usr/lib/xorg/Xorg                              4MiB |
|    0   N/A  N/A      3195      G   /usr/lib/xorg/Xorg                              4MiB |
+-----------------------------------------------------------------------------------------+

我查阅了OpenCV官方文档《Installation in Linux》,但它仅覆盖Ubuntu 18.04安装,未提及编译CUDA支持所需参数,也未说明后续如何在Python中使用编译后的版本。官方仓库文档也指向该官方文档。我还找到一篇2020年的教程,但针对Ubuntu 18.04已过时。

现寻求:如何在Ubuntu 20.04编译带CUDA支持的OpenCV并在Python中使用,或哪里可找到详细官方文档?


编译带CUDA支持的OpenCV并配置Python环境(Ubuntu 20.04)

步骤1:卸载已有的OpenCV(可选但推荐)

避免不同版本的OpenCV冲突,先卸载已安装的版本:

# 卸载apt安装的OpenCV
sudo apt remove -y libopencv* python3-opencv
# 卸载pip安装的OpenCV
pip uninstall -y opencv-python opencv-contrib-python

步骤2:安装编译依赖

安装编译OpenCV所需的基础工具和依赖库:

sudo apt update && sudo apt install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
# 安装Python相关依赖
sudo apt install -y python3-dev python3-numpy
# 安装额外媒体处理依赖
sudo apt install -y libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev

步骤3:克隆OpenCV及扩展库仓库

OpenCV-contrib包含CUDA加速的额外模块,需与主仓库版本匹配:

mkdir -p ~/opencv_build && cd ~/opencv_build
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
# 切换到最新稳定版本(示例为4.9.0,可按需调整)
cd opencv && git checkout 4.9.0 && cd ../opencv_contrib && git checkout 4.9.0

步骤4:配置CMake编译参数

创建编译目录并设置关键编译参数,开启CUDA支持:

cd ~/opencv_build/opencv && mkdir -p build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D INSTALL_C_EXAMPLES=OFF \
      -D OPENCV_ENABLE_NONFREE=ON \
      -D WITH_CUDA=ON \
      -D WITH_CUDNN=ON \
      -D OPENCV_DNN_CUDA=ON \
      -D ENABLE_FAST_MATH=1 \
      -D CUDA_FAST_MATH=1 \
      -D CUDA_ARCH_BIN=8.6 \  # RTX3050属于安培架构,算力为8.6,需匹配自身GPU算力
      -D WITH_CUBLAS=1 \
      -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
      -D HAVE_opencv_python3=ON \
      -D PYTHON_EXECUTABLE=/usr/bin/python3 \
      -D BUILD_EXAMPLES=ON ..

提示:CUDA_ARCH_BIN需对应你的GPU算力,可通过NVIDIA官网查询具体型号的算力值。

步骤5:编译并安装

根据CPU核心数调整-j参数(示例用全部核心编译):

make -j$(nproc)
sudo make install
sudo ldconfig

步骤6:配置Python环境链接

将编译生成的OpenCV Python库链接到Python的site-packages目录:

  1. 找到编译后的库文件路径:
find /usr/local/lib -name "cv2*.so"

示例输出:/usr/local/lib/python3.8/site-packages/cv2/python-3.8/cv2.cpython-38-x86_64-linux-gnu.so

  1. 创建软链接到Python默认库目录(根据自身Python版本调整路径):
# 查看Python的site-packages路径
python3 -c "import sys; print(sys.path)"
# 为Ubuntu20.04的Python3.8创建软链接
sudo ln -s /usr/local/lib/python3.8/site-packages/cv2/python-3.8/cv2.cpython-38-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/cv2.so

步骤7:验证CUDA支持

打开Python终端,验证OpenCV的CUDA模块是否正常加载:

import cv2
print(cv2.__version__)
print(cv2.cuda.getCudaEnabledDeviceCount())  # 输出1表示CUDA可用

若输出1,说明CUDA支持已成功配置,此时运行YOLO即可指定使用GPU加速。


内容的提问来源于stack exchange,提问作者noosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 00:07:02