ubuntu22.04 安装opencv cuda
时间: 2025-04-02 20:08:10 浏览: 45
### 安装支持 CUDA 的 OpenCV
要在 Ubuntu 22.04 上安装带有 CUDA 支持的 OpenCV,需要完成以下几个方面的操作:
#### 1. 配置开发环境
在开始之前,确保系统已更新至最新状态并安装必要的构建工具和依赖项。
```bash
sudo apt update && sudo apt upgrade -y
sudo apt-get install 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[^1]
```
这些依赖项涵盖了 OpenCV 构建过程中可能需要用到的核心功能模块。
---
#### 2. 下载 OpenCV 和 opencv_contrib 源码
下载官方发布的 OpenCV 和 `opencv_contrib` 库源码包。这里假设使用的版本为 `4.x`。
```bash
OPENCV_VERSION="4.8.0"
wget -O opencv.zip https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip
unzip opencv.zip
unzip opencv_contrib.zip
mv opencv-${OPENCV_VERSION} opencv
mv opencv_contrib-${OPENCV_VERSION} opencv_contrib
rm *.zip
```
上述命令会创建两个文件夹:`opencv` 和 `opencv_contrib`[^2]。
---
#### 3. 安装 NVIDIA CUDA 工具链
为了使 OpenCV 能够利用 GPU 加速,需先安装 CUDA 并验证其可用性。
##### (a) 安装 CUDA
按照官方文档或引用中的方法安装适合系统的 CUDA 版本[^3]。例如:
```bash
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-<driver-version>
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install cuda
```
完成后重启计算机以加载新的驱动程序。
##### (b) 验证 CUDA 是否正常工作
运行以下命令测试 CUDA 功能是否生效:
```bash
nvcc --version
cat /usr/local/cuda/version.txt
```
如果显示正确的 CUDA 版本号,则说明安装成功。
##### (c) 安装 cuDNN
从 NVIDIA 官方网站获取对应版本的 cuDNN 文件,并将其解压到指定路径下。执行如下指令设置权限并验证版本:
```bash
sudo cp include/cudnn*.h /usr/local/cuda/include/
sudo cp lib/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
```
确认输出中包含有效的 cuDNN 主次版本号。
---
#### 4. 编译 OpenCV
进入先前提取好的 OpenCV 目录,在其中建立一个新的子目录用于存储编译产物。
```bash
cd ~/opencv
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D WITH_CUDA=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D BUILD_EXAMPLES=OFF ..
make -j$(nproc)
sudo make install
sudo ldconfig
```
此过程通过启用 `-D WITH_CUDA=ON` 参数告知 CMake 使用本地安装的 CUDA SDK 来优化性能;同时引入额外的功能模块(来自 `opencv_contrib`),从而扩展核心库的能力范围。
---
#### 5. 测试安装结果
最后编写一段简单的 Python 或 C++ 程序来检测新部署的 OpenCV 实例能否识别硬件加速特性。
Python 示例脚本:
```python
import cv2 as cv
print(cv.__version__)
if cv.cuda.getCudaEnabledDeviceCount() > 0:
print("CUDA support is enabled.")
else:
print("No CUDA device detected or disabled during compilation.")
```
C++ 示例代码片段:
```cpp
#include <opencv2/core.hpp>
#include <iostream>
int main(int argc, char **argv){
std::cout << CV_VERSION << "\n";
int count = cv::cuda::getCudaEnabledDeviceCount();
if(count>0){
std::cout<<"CUDA support is enabled.\n";
}
else{
std::cerr<<"No CUDA devices found!\n";
}
return 0;
}
```
以上两段示例均能帮助判断当前环境中是否存在有效激活的 GPU 设备以及它们是否被正确集成到了所选框架里。
---
### 总结
综上所述,整个流程涉及基础软件栈搭建、图形处理单元驱动适配及其附属组件装配等多个环节。每一步都至关重要,任何遗漏都有可能导致最终目标无法达成。
阅读全文
相关推荐

















