【2026最新】Jetson全系列安装支持CUDA加速的OpenCV 4.10保姆级教程(适配Jetpack 6/5及Orin/Xavier/Nano等)

前言

在 NVIDIA Jetson 边缘计算平台上(如 Jetson AGX Orin, Orin NX, Xavier NX, Nano 等),如果你设备的 OpenCV 不支持 CUDA 加速(仅 CPU 版本)。对于从事计算机视觉(CV)开发的工程师来说,无法利用 GPU 加速会极大地限制模型推理、图像预处理的效率。

手动从源码编译 OpenCV 支持 CUDA 是一项繁琐的工作,涉及到大量的依赖项安装、CMake 参数配置以及路径设置,稍有不慎就会编译失败。

本文将分享一个通用的自动化安装脚本 ,该脚本我已在 Jetson AGX Orin (Jetpack 6.1) 和 Jetson Orin NX (Jetpack 6.2) 环境下测试通过。通过修改脚本头部的三个变量,应该也同样适用于其他 Jetson 型号和 OpenCV 版本。

致谢与参考:

本教程的核心脚本逻辑及安装思路借鉴自 GitHub 仓库:bluevisor/OpenCV_4.10.0_with_cuda_on_Jetson_AGX_Orin

博主在此基础上进行了通用化封装,并修复了在 Jetpack 6 下 G-API 模块导致的编译错误。


Jetson AGX Orin 编译前后对比:

Jetson Orin NX 编译前后对比:

  1. 核心安装脚本

此脚本整合了依赖安装、源码下载、CMake 配置(包含 CUDA 加速及 G-API 修复)、编译安装及环境变量设置的全流程。

使用方法:

  1. 在 Jetson 设备上新建文件 install_opencv_cuda.sh

  2. 将下方代码完整复制进去。

  3. 不要直接运行! 请继续阅读下一节"配置修改指南",根据你的设备修改脚本开头的变量。

    #!/bin/bash

    脚本修改自: https://github.com/bluevisor/OpenCV_4.10.0_with_cuda_on_Jetson_AGX_Orin/tree/main

    ================= 配置区域 (根据你的设备修改这里) =================

    1. 设置你想安装的 OpenCV 版本

    本教程以 4.10.0 为例,理论上 4.5.x, 4.8.x 等 4.x 版本均支持 CUDA 加速

    version="4.10.0"

    2. 设置 CUDA 算力架构 (重要!)

    请根据你的设备型号取消注释对应的行,或手动修改数值

    Orin 系列 (AGX Orin, Orin NX, Orin Nano): "8.7"

    Xavier 系列 (AGX Xavier, Xavier NX): "7.2"

    TX2: "6.2"

    Jetson Nano (Maxwell架构): "5.3"

    ARCH_BIN="8.7"

    3. 设置 Python 版本路径 (根据 Jetpack 版本修改)

    Jetpack 6 (Ubuntu 22.04) -> "3.10"

    Jetpack 5 (Ubuntu 20.04) -> "3.8"

    Jetpack 4 (Ubuntu 18.04) -> "3.6"

    PYTHON_VERSION_NUM="3.10"

    =================================================================

    folder="workspace"

    set -e

    询问是否卸载旧版本(防止冲突)

    for (( ; ; ))
    do
    echo "Do you want to remove the default OpenCV (yes/no)?"
    read rm_old

    复制代码
     if [ "$rm_old" = "yes" ]; then
         echo "** Remove other OpenCV first"
         sudo apt -y purge *libopencv*
         break
     elif [ "$rm_old" = "no" ]; then
         break
     fi

    done

    echo "------------------------------------"
    echo "** Install requirement (1/4)"
    echo "------------------------------------"

    注意:确保你的 apt 源是可用的,推荐使用清华源或中科大源

    sudo apt-get update
    sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
    sudo apt-get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev
    sudo apt-get install -y libv4l-dev v4l-utils qv4l2
    sudo apt-get install -y curl

    echo "------------------------------------"
    echo "** Download opencv "{version}" (2/4)" echo "------------------------------------" mkdir -p folder
    cd ${folder}

    下载源码 (增加了防重复下载判断)

    if [ ! -f "opencv-{version}.zip" ]; then curl -L https://github.com/opencv/opencv/archive/{version}.zip -o opencv-{version}.zip fi if [ ! -f "opencv_contrib-{version}.zip" ]; then
    curl -L https://github.com/opencv/opencv_contrib/archive/${version}.zip -o opencv_contrib-${version}.zip
    fi

    unzip -o opencv-{version}.zip unzip -o opencv_contrib-{version}.zip
    cd opencv-${version}/

    echo "------------------------------------"
    echo "** Build opencv "${version}" (3/4)"
    echo "------------------------------------"
    mkdir -p release
    cd release/

    CMake 编译配置

    注意:加入了 -D BUILD_opencv_gapi=OFF 以解决部分环境下的编译报错

    cmake -D WITH_CUDA=ON
    -D WITH_CUDNN=ON
    -D CUDA_ARCH_BIN="{ARCH_BIN}" \ -D CUDA_ARCH_PTX="" \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-{version}/modules
    -D WITH_GSTREAMER=ON
    -D WITH_LIBV4L=ON
    -D BUILD_opencv_python3=ON
    -D BUILD_opencv_gapi=OFF
    -D BUILD_TESTS=OFF
    -D BUILD_PERF_TESTS=OFF
    -D BUILD_EXAMPLES=OFF
    -D CMAKE_BUILD_TYPE=RELEASE
    -D CMAKE_INSTALL_PREFIX=/usr/local ..

    使用所有核心并行编译

    make -j$(nproc)

    echo "------------------------------------"
    echo "** Install opencv "${version}" (4/4)"
    echo "------------------------------------"
    sudo make install

    配置环境变量

    echo 'export LD_LIBRARY_PATH=/usr/local/lib:LD_LIBRARY_PATH' >> ~/.bashrc echo "export PYTHONPATH=/usr/local/lib/python{PYTHON_VERSION_NUM}/site-packages/:$PYTHONPATH" >> ~/.bashrc
    source ~/.bashrc

    echo "** Install opencv "${version}" successfully"
    echo "** Bye :)"


2. 配置修改指南(如何适配其他型号)

该脚本通过提取变量,实现了极高的通用性。如果你使用的是 Jetson AGX Orin 且系统是的Jetpack 6系列,上述脚本可直接使用。

如果你是其他设备,请务必修改脚本开头的以下三个变量:

变量一:version (OpenCV 版本)

脚本默认为 4.10.0

  • 支持说明:本脚本已在 4.10.0 上验证通过。理论上 OpenCV 4.x 系列(如 4.5.5, 4.8.0 等)均包含 CUDA 模块,修改版本号即可支持。

  • 建议 :若无特定版本需求,建议保持 4.10.0,因为这是目前在 Orin 平台上兼容性验证得最好的版本之一

变量二:ARCH_BIN (CUDA 算力架构) ------ 最关键!

不同的 Jetson 芯片拥有不同的 GPU 架构。如果填错,编译出的 OpenCV 将无法调用 CUDA,甚至报错。

请根据你的设备型号,在脚本中填入对应的数值:

Jetson 设备型号 架构代号 ARCH_BIN 修改值 备注
Jetson AGX Orin Ampere "8.7" 脚本默认值
Jetson Orin NX Ampere "8.7" 与 AGX Orin 相同
Jetson Orin Nano Ampere "8.7" 与 AGX Orin 相同
Jetson AGX Xavier Volta "7.2"
Jetson Xavier NX Volta "7.2"
Jetson TX2 Pascal "6.2"
Jetson Nano (B01) Maxwell "5.3" 老款 Nano 请填这个

变量三:PYTHON_VERSION_NUM (Python 版本)

OpenCV 编译完成后生成的 Python 库文件 (cv2.so) 需要放置在系统 Python 的 site-packages 目录下才能被 import。这个路径取决于你安装的 Jetpack 版本。

请通过终端输入 python3 --version 确认,并修改脚本:

Jetpack 版本 Ubuntu 系统 默认 Python PYTHON_VERSION_NUM 修改值
Jetpack 6.x Ubuntu 22.04 3.10 "3.10"
Jetpack 5.x Ubuntu 20.04 3.8 "3.8"
Jetpack 4.x Ubuntu 18.04 3.6 "3.6"

3. 安装步骤

3.1 准备工作

  • 开启最大性能模式:编译过程耗时且发热,建议开启风扇。

    复制代码
    sudo nvpmodel -m 0
    sudo jetson_clocks
  • 检查网络 :脚本需要从 GitHub 下载源码,请确保"网络通畅"。

3.2 运行安装

  1. 赋予脚本执行权限:

    复制代码
    chmod +x install_opencv_cuda.sh
  2. 执行脚本:

    复制代码
    sudo ./install_opencv_cuda.sh
  3. 交互提示

    • 脚本启动后会问你 Do you want to remove the default OpenCV (yes/no)?

    • 首次运行 :建议输入 yes。这会卸载系统自带的、不支持 CUDA 的 OpenCV,避免版本冲突。

    • 失败重试 :如果之前已经卸载过,输入 no 即可。

3.3 等待编译

在 AGX Orin 上编译约需 30-50 分钟,在 NX 上大概需要数小时。看到 ** Install opencv 4.10.0 successfully 即表示成功。


4. 验证安装

安装完成后,务必新开一个终端窗口 (让 .bashrc 环境变量生效),然后执行以下验证:

方法一:Python 代码验证

在终端输入:

复制代码
python3 -c "import cv2; print('OpenCV:', cv2.__version__); print('CUDA Enabled:', cv2.cuda.getCudaEnabledDeviceCount() > 0)"

预期输出:

复制代码
OpenCV: 4.10.0
CUDA Enabled: True

如果 CUDA Enabled 显示为 True,恭喜你,安装成功!

方法二:jtop 查看

如果你安装了 jetson-stats 工具,可以运行 jtop,在 INFO 页面底部查看 OpenCV 状态,应显示为 4.10.0 with CUDA: YES

编译后Jetson AGX Orin 如下:

编译后Jetson Orin NX 如下:

5. 常见问题 (Troubleshooting)

在安装过程中,你可能会遇到以下情况,请参考本节解决。

① 脚本运行到 apt update 报错退出

现象 : 脚本刚开始运行,显示 Install requirement (1/4),紧接着报错并退出。 原因 : 脚本中使用了 set -e 命令,这意味着任何一条命令返回错误(Error)都会导致整个脚本立即停止。如果你的系统软件源配置有问题(例如添加了失效的 PPA、Docker 源连接超时、或者使用了不支持 ARM 架构的源),sudo apt update 就会报错,从而中断脚本。 解决方法

  1. 手动在终端运行 sudo apt update

  2. 观察报错信息(Err),找到有问题的源。

  3. 进入 /etc/apt/sources.list.d/ 删除相关的问题文件,或者更换为稳定的清华源/中科大源。

  4. 确保手动运行 sudo apt update 不再报错后,重新运行安装脚本。

② 编译到 100% 时出现大量 Warning 警告

现象 : 编译进度条走到 [100%],或者在处理 modules/python3/... 时,终端出现大量紫色或红色的警告信息,类似于:

复制代码
warning: 'virtual void cv::cuda::DescriptorMatcher::clear()' can be marked override [-Wsuggest-override]
CV_WRAP virtual void clear() = 0;

原因这不是报错! 这是 GCC 编译器对代码风格的建议(Suggest Override)。它提示开发者某些虚函数可以加上 override 关键字以符合现代 C++ 规范。 解决方法无视它,耐心等待。 只要没有出现 Error 字样,且脚本最终打印了 ** Install opencv 4.10.0 successfully,就说明编译是成功的。这些警告不会影响 OpenCV 的功能和性能。

③ 遇到 G-API 相关报错

现象 : 报错信息包含 error: '...' in namespace 'cv::gapi' does not name a type原因 : OpenCV 的 G-API 模块在部分 Jetpack 6 环境下与 Python 绑定的兼容性问题。 解决方法 : 本教程提供的脚本已经通过添加 -D BUILD_opencv_gapi=OFF 参数解决了此问题。只要使用本文的脚本,通常不会再遇到此错误。


希望这篇教程能帮你解决 Jetson 环境配置的难题!如有疑问,欢迎在评论区交流。

相关推荐
米高梅狮子2 小时前
04. iSCSI 服务器
linux·运维·服务器
Yongqiang Cheng2 小时前
CUDA Programming Guide: 2.1. Intro to CUDA C++
cuda·programming·cuda c++
optimistic_chen2 小时前
【Docker入门】Docker原理和安装
linux·运维·服务器·docker·容器·命令行
wdfk_prog2 小时前
[Linux]学习笔记系列 --[drivers][base]devtmpfs
linux·笔记·学习
渣渣灰95872 小时前
Windows11安装WSL2(Windows Subsystem for Linux)
linux·运维·windows
南山二毛2 小时前
ubuntu开机自启动脚本
linux·运维·ubuntu
大模型实验室Lab4AI2 小时前
AAAI 2026 | 西北工业大学提出 YOLO-IOD,实时增量目标检测新框架
人工智能·计算机视觉·目标跟踪
晚风吹人醒.2 小时前
Rsync多种传输方式实现远程同步,增量备份全流程讲解及示例
linux·运维·centos·rsync·远程同步·inotify·增量备份
optimistic_chen2 小时前
【Redis系列】哨兵模式
linux·数据库·redis·分布式·哨兵