前言
在 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 编译前后对比:


- 核心安装脚本
此脚本整合了依赖安装、源码下载、CMake 配置(包含 CUDA 加速及 G-API 修复)、编译安装及环境变量设置的全流程。
使用方法:
-
在 Jetson 设备上新建文件
install_opencv_cuda.sh。 -
将下方代码完整复制进去。
-
不要直接运行! 请继续阅读下一节"配置修改指南",根据你的设备修改脚本开头的变量。
#!/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_oldif [ "$rm_old" = "yes" ]; then echo "** Remove other OpenCV first" sudo apt -y purge *libopencv* break elif [ "$rm_old" = "no" ]; then break fidone
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 curlecho "------------------------------------"
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
fiunzip -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 ~/.bashrcecho "** 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 运行安装
-
赋予脚本执行权限:
chmod +x install_opencv_cuda.sh -
执行脚本:
sudo ./install_opencv_cuda.sh -
交互提示:
-
脚本启动后会问你
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 就会报错,从而中断脚本。 解决方法:
-
手动在终端运行
sudo apt update。 -
观察报错信息(Err),找到有问题的源。
-
进入
/etc/apt/sources.list.d/删除相关的问题文件,或者更换为稳定的清华源/中科大源。 -
确保手动运行
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 环境配置的难题!如有疑问,欢迎在评论区交流。