Jetson Orin Nano Super 从零编译 OpenCV 4.10 + CUDA 全指南(附踩坑实录)
适用平台:NVIDIA Jetson Orin Nano Super (JetPack 36.5.0 / L4T R36.5.0)
OpenCV 版本:4.10.0(自编译,带 CUDA 12.6 + cuDNN 9.3)
最终成果:33 个 CUDA 加速模块,cv2.cuda.getCudaEnabledDeviceCount() 返回 1 ✅
一、前言
NVIDIA Jetson 开发板自带的 OpenCV 通常是不带 CUDA 加速的 Ubuntu 仓库版本。如果你需要 GPU 加速的图像处理(如 cv2.cuda.GpuMat、CUDA 滤波、DNN GPU 推理等),必须自行编译。
本文记录在 Jetson Orin Nano Super(8GB 内存) 上从源码编译 OpenCV 4.10 + CUDA 的完整过程,以及踩过的所有坑。
二、环境信息
| 设备 | NVIDIA Jetson Orin Nano Super (P3767-0005) |
| SoC | tegra234, 6核 Cortex-A78AE |
| 内存 | 7.4 GB(统一内存架构,GPU/CPU 共享) |
| 系统 | Ubuntu 22.04.5 LTS (aarch64) |
| 内核 | 5.15.185-tegra |
| JetPack / L4T | 36.5.0 (R36.5.0) |
| CUDA | 12.6.68 |
| cuDNN | 9.3.0 |
| GCC | 11.4.0 |
| CMake | 3.26.4 |
| Python | 3.10.12 |
| 功耗模式 | MAXN_SUPER(最高性能) |
三、踩坑 ①:内存不足,编译时 SSH 断开、系统死机 🔥
现象
直接 make -j4 或 -j6 编译,内存瞬间耗尽,SSH 断开连接,板子假死。
根因
Orin Nano 只有 7.4GB 物理内存,而 NVCC 编译 CUDA 代码时单个进程就能吃掉 1~2GB。默认的 zram 交换空间(3.7GB)无法吸收突发内存需求。
解决方案:添加 SSD 交换文件
# 创建 8GB 交换文件
sudo dd if=/dev/zero of=/swapfile bs=1M count=8192 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 设置开机自动挂载
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 验证
free -h
# total used free shared buff/cache available
# Swap: 11Gi 0B 11Gi ← 3.7G zram + 8G SSD = 11G
⚠️ 即使加了 swap,也不要用 -j4 以上,NVCC 并行编译时 swap 会导致极度卡顿。
四、踩坑 ②:GitHub 下载源码失败(TLS 错误、速度极慢)
解决方案:使用 Gitee 镜像
cd ~
# OpenCV 主仓库(Gitee 镜像,国内飞快)
git clone –depth 1 –branch 4.10.0 https://gitee.com/mirrors/opencv.git opencv-4.10.0
# opencv_contrib(Gitee 镜像只有到 4.9.0,4.10.0 需要用 GitHub 或手动下载 zip)
# 如果 GitHub 能访问:
git clone –depth 1 –branch 4.10.0 https://github.com/opencv/opencv_contrib.git opencv_contrib-4.10.0
# 如果不能,从其他地方下载 zip 解压也可
💡 opencv_contrib 的 Gitee 镜像只有 4.9.0。如果下载困难,可以跳过 contrib——CUDA 核心模块(cudaarithm、cudafilters、cudaimgproc 等)都在主仓库中。
五、踩坑 ③:CMake 配置时下载 3rdparty 文件失败
现象
ADE: Downloading v0.1.2d.zip from https://github.com/opencv/ade/archive/v0.1.2d.zip
Try 1 failed
CMake Warning: ADE: Download failed
根因
CMake 在配置阶段会从 GitHub 下载部分第三方依赖(如 ADE、wechat_qrcode 模型、xfeatures2d 描述符等),网络不通时会报 Warning。
解决方案
这些 3rdparty 文件大多不影响 CUDA 核心功能。CMake 配置仍会成功完成,编译时相关模块会自动跳过。如果想完整编译所有模块,确保网络能访问 GitHub 即可。
📌 ADE、wechat_qrcode、face 等模块下载失败不影响 CUDA 加速,核心 CUDA 模块(cudaarithm、cudafilters 等)不依赖这些文件。
六、踩坑 ④:编译时报 “CUDA: OpenCV requires enabled ‘cudev’ module”
现象
CMake Error at modules/core/CMakeLists.txt:158 (message):
CUDA: OpenCV requires enabled 'cudev' module from 'opencv_contrib'
repository: https://github.com/opencv/opencv_contrib
根因
CUDA 支持需要 cudev 模块,它位于 opencv_contrib 中。
解决方案
在 CMake 中指定 OPENCV_EXTRA_MODULES_PATH:
-D OPENCV_EXTRA_MODULES_PATH=/home/ysdhanji/opencv_contrib-4.10.0/modules
七、正式编译流程
7.1 CMake 配置
cd ~/opencv-4.10.0
mkdir build && cd build
cmake \\
-D CMAKE_BUILD_TYPE=Release \\
-D CMAKE_INSTALL_PREFIX=/usr/local \\
-D WITH_CUDA=ON \\
-D WITH_CUDNN=ON \\
-D OPENCV_DNN_CUDA=ON \\
-D CUDA_ARCH_BIN=8.7 \\
-D CUDA_ARCH_PTX="" \\
-D ENABLE_FAST_MATH=ON \\
-D CUDA_FAST_MATH=ON \\
-D WITH_CUBLAS=ON \\
-D WITH_CUFFT=ON \\
-D BUILD_TESTS=OFF \\
-D BUILD_PERF_TESTS=OFF \\
-D BUILD_EXAMPLES=OFF \\
-D BUILD_opencv_apps=OFF \\
-D BUILD_opencv_java=OFF \\
-D BUILD_opencv_python2=OFF \\
-D BUILD_opencv_python3=ON \\
-D OPENCV_EXTRA_MODULES_PATH=/home/ysdhanji/opencv_contrib-4.10.0/modules \\
-D OPENCV_GENERATE_PKGCONFIG=ON \\
.. 2>&1 | tee cmake.log
关键参数说明:
| CUDA_ARCH_BIN=8.7 | Orin 的 SM 架构,只编译需要的,省时间 |
| CUDA_ARCH_PTX="" | 不生成 PTX,进一步省编译时间 |
| BUILD_TESTS=OFF | 跳过测试,省编译时间和空间 |
| ENABLE_FAST_MATH=ON | CUDA 快速数学优化 |
| OPENCV_DNN_CUDA=ON | DNN 模块使用 CUDA 后端(cuDNN) |
配置成功后应看到:
— NVIDIA CUDA: YES (ver 12.6, CUFFT CUBLAS FAST_MATH)
— NVIDIA GPU arch: 87
— cuDNN: YES (ver 9.3.0)
— Configuring done
— Generating done
7.2 编译(关键!)
# ⚠️ 用 -j2,不要超过 -j2!
# 6 核 CPU 但只有 8GB 内存,NVCC 并行编译极易 OOM
make -j2 2>&1 | tee build.log
🕐 Orin Nano Super 上 -j2 编译约需 40~60 分钟。-j1 约需 90~120 分钟。
7.3 安装
sudo make install
sudo ldconfig
八、验证 CUDA 加速
python3 -c "import cv2; print('OpenCV:', cv2.__version__); print('CUDA devices:', cv2.cuda.getCudaEnabledDeviceCount())"
预期输出:
OpenCV: 4.10.0
CUDA devices: 1
如果返回 CUDA devices: 0,说明 CUDA 支持未正确编译。
九、编译成果
| OpenCV 版本 | 4.10.0 |
| CUDA 模块数 | 11 个 |
| 安装大小 | ~221 MB |
| 磁盘占用 | 编译目录 ~2.5GB,安装后 ~221MB |
已编译的 CUDA 模块:
cudaarithm cudabgsegm cudacodec cudafeatures2d
cudafilters cudaimgproc cudalegacy cudaobjdetect
cudaoptflow cudastereo cudawarping
可用的 CUDA 功能示例:
import cv2
import numpy as np
# GPU 矩阵操作
gpu_mat = cv2.cuda.GpuMat()
gpu_mat.upload(np.random.rand(1000, 1000).astype(np.uint8))
# GPU 高斯滤波
gpu_blur = cv2.cuda.createGaussianFilter(
cv2.CV_8UC1, cv2.CV_8UC1, (15, 15), 0
)
result = gpu_blur.apply(gpu_mat)
# GPU 图像缩放
gpu_resized = cv2.cuda.resize(gpu_mat, (500, 500))
# 下载回 CPU
cpu_result = result.download()
十、踩坑 ⑤:jetson-stats 不兼容 L4T 36.5.0
现象
sudo jtop
# [WARN] jetson-stats not supported for [L4T 36.5.0]
根因
PyPI 上的 jetson-stats 4.3.2 尚未适配 2026 年 1 月发布的 L4T 36.5.0。
解决方案:手动补丁
# 编辑版本映射文件
sudo vim /usr/local/lib/python3.10/dist-packages/jtop/core/jetson_variables.py
# 在 JP6 段添加一行:
NVIDIA_JETPACK = {
# ——– JP6 ——–
"36.5.0": "6.2.2", # ← 添加这行
"36.4.3": "6.2",
...
}
📌 GitHub 主分支已包含此修复,但 PyPI 尚未更新。后续直接 sudo pip3 install -U jetson-stats 即可。
十一、清理(可选)
编译完成后可删除源码目录节省空间:
# 保留源码(推荐,方便后续重新编译)
# 或者删除:
rm -rf ~/opencv-4.10.0 ~/opencv_contrib-4.10.0
# SSD swap 如需保留(推荐,后续编译 PyTorch 等也需要):
# 已加入 /etc/fstab,重启自动生效
十二、总结
| 内存不足死机 | SSH 断开、板子假死 | 加 8GB SSD swap,-j2 编译 |
| GitHub 下载慢 | TLS 错误、超时 | 用 Gitee 镜像 |
| CMake 下载 3rdparty 失败 | Warning 提示下载失败 | 不影响 CUDA 核心功能,可忽略 |
| 缺少 cudev 模块 | CMake Error | 加 OPENCV_EXTRA_MODULES_PATH |
| jetson-stats 不兼容 | L4T 36.5.0 警告 | 手动补丁 jetson_variables.py |
最终成果:OpenCV 4.10.0 + CUDA 12.6 + cuDNN 9.3,11 个 CUDA 模块全部可用,DNN GPU 推理就绪 🎉

📝 本文基于 2026 年 5 月 28 日实操记录。环境:NVIDIA Jetson Orin Nano Super, JetPack 36.5.0, L4T R36.5.0

![[特殊字符]DeepSeek‑Harness(DSH)小白保姆教程-171主机测评](https://www.171host.com/wp-content/uploads/2026/08/20260816085112-6a817a009aabf-220x150.png)
