Jetson Orin Nano 4GB 编译安装 OpenCV 4.14(CUDA 13.2 + cuDNN)
Jetson Orin Nano 4GB 编译安装 OpenCV 4.14(CUDA 13.2 + cuDNN)
一、环境说明
本文记录在 NVIDIA Jetson Orin Nano 4GB 上编译安装 OpenCV 4.14.0 的过程,启用 CUDA、cuDNN、FFmpeg、GStreamer 等功能,并编译 Python 3 接口。
硬件与软件环境:
| 项目 | 配置 |
|---|---|
| 硬件平台 | NVIDIA Jetson Orin Nano 4GB |
| JetPack | 7.2.1 |
| 操作系统 | Ubuntu 24.04 |
| CPU 架构 | ARM64(aarch64) |
| Python | 3.12 |
| CUDA | 13.2 |
| cuDNN | 9.20.0 |
| OpenCV | 4.14.0 |
| C++ 标准 | C++17 |
本文以实际 CMake 配置输出为依据,记录关键编译选项和功能支持情况。

二、安装依赖
安装 GTK、FFmpeg、Eigen、LAPACK 相关开发依赖,以及 Qt 相关依赖包:
sudo apt update
sudo apt install \
libva-dev \
liblapack-dev \
libgtkglext1-dev \
libgtkmm-3.0-dev \
libeigen3-dev \
libqt6core5compat6-dev \
qt6-base-dev \
ffmpeg \
libglfw3-dev
说明: 本次编译最终使用 GTK3 作为 GUI 后端。启用 Qt 时遇到了编译失败的问题,暂时不进一步分析原因,因此本文不启用 Qt。GTK 已能满足当前使用需求。
三、下载 OpenCV 源码
创建源码目录:
mkdir -p ~/dev
cd ~/dev
下载 OpenCV 及其扩展模块,并切换到对应的 4.14 版本:
git clone --branch 4.14.0 --depth 1 \
https://github.com/opencv/opencv.git opencv-4.14.0
git clone --branch 4.14.0 --depth 1 \
https://github.com/opencv/opencv_contrib.git opencv_contrib-4.14.0
其中:
opencv:OpenCV 主仓库。opencv_contrib:额外模块仓库,包含部分扩展算法和功能模块。--depth 1:只获取指定分支的浅层历史记录,减少下载量。
主仓库与扩展模块仓库应使用相互匹配的版本。
四、配置 CMake
创建构建目录:
cd ~/dev/opencv-4.14.0
mkdir build
cd build
执行 CMake 配置:
cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.14.0/modules \
-D WITH_CUDA=ON \
-D BUILD_opencv_python3=ON \
-D WITH_FFMPEG=ON \
-D WITH_V4L=ON \
-D WITH_QT=OFF \
-D WITH_OPENGL=ON \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUBLAS=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D WITH_GSTREAMER=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D WITH_LAPACK=ON \
-D CMAKE_CXX_STANDARD=17 \
-D CMAKE_CXX_STANDARD_REQUIRED=ON \
-D BUILD_DOCS=OFF \
..
关键参数说明
| 参数 | 作用 |
|---|---|
CMAKE_BUILD_TYPE=RELEASE |
使用 Release 构建配置 |
CMAKE_INSTALL_PREFIX=/usr/local |
指定安装目录 |
OPENCV_EXTRA_MODULES_PATH |
指定 opencv_contrib 扩展模块目录 |
WITH_CUDA=ON |
启用 CUDA 支持 |
WITH_CUBLAS=ON |
启用 cuBLAS 支持 |
WITH_FFMPEG=ON |
启用 FFmpeg 视频编解码后端 |
WITH_GSTREAMER=ON |
启用 GStreamer 视频后端 |
WITH_V4L=ON |
启用 V4L/V4L2 支持 |
WITH_OPENGL=ON |
启用 OpenGL 支持 |
WITH_QT=OFF |
不使用 Qt GUI 后端 |
ENABLE_FAST_MATH=ON |
启用快速数学优化 |
CUDA_FAST_MATH=ON |
启用 CUDA 快速数学优化 |
BUILD_opencv_python3=ON |
构建 Python 3 接口 |
OPENCV_ENABLE_NONFREE=ON |
启用 OpenCV 中标记为 non-free 的算法 |
CMAKE_CXX_STANDARD=17 |
使用 C++17 标准 |
BUILD_DOCS=OFF |
不构建 OpenCV 文档 |
这里将 BUILD_DOCS 设置为 OFF,因为本次目标是安装可用的 OpenCV 库,并不需要构建文档。
检查 CMake 配置结果
配置完成后,重点确认以下项目:
- NVIDIA CUDA:
YES,版本 13.2。 - NVIDIA GPU arch:
87,对应 Jetson Orin Nano 的 GPU 计算能力 8.7。 - cuDNN:
YES,版本 9.20.0。 - Python 3:
YES,版本 3.12.3。 - FFmpeg:
YES。 - GStreamer:
YES。 - OpenGL:
YES。 - GUI: GTK3。
- Non-free algorithms:
YES。
我的结果:
-- General configuration for OpenCV 4.14.0 =====================================
-- Version control: unknown
--
-- Extra modules:
-- Location (extra): /home/jetson/dev/opencv_contrib-4.14.0/modules
-- Version control (extra): unknown
--
-- Platform:
-- Timestamp: 2026-10-07T16:10:35Z
-- Host: Linux 6.8.12-1021-tegra aarch64
-- CMake: 4.4.3
-- CMake generator: Unix Makefiles
-- CMake build tool: /usr/bin/gmake
-- Configuration: RELEASE
-- Algorithm Hint: ALGO_HINT_ACCURATE
--
-- CPU/HW features:
-- Baseline: NEON FP16
-- requested: DETECT
-- Dispatched code generation: NEON_DOTPROD NEON_FP16 NEON_BF16
-- requested: NEON_FP16 NEON_BF16 NEON_DOTPROD
-- NEON_DOTPROD (3 files): + NEON_DOTPROD
-- NEON_FP16 (2 files): + NEON_FP16
-- NEON_BF16 (0 files): + NEON_BF16
--
-- C/C++:
-- Built as dynamic libs?: YES
-- C++ standard: 17
-- C++ Compiler: /usr/bin/c++ (ver 13.3.0)
-- C++ flags (Release): -fsigned-char -ffast-math -fno-finite-math-only -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG
-- C++ flags (Debug): -fsigned-char -ffast-math -fno-finite-math-only -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG
-- C Compiler: /usr/bin/cc
-- C flags (Release): -fsigned-char -ffast-math -fno-finite-math-only -W -Wall -Wreturn-type -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -O3 -DNDEBUG -DNDEBUG
-- C flags (Debug): -fsigned-char -ffast-math -fno-finite-math-only -W -Wall -Wreturn-type -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -g -O0 -DDEBUG -D_DEBUG
-- Linker flags (Release): -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined
-- Linker flags (Debug): -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined
-- ccache: NO
-- Precompiled headers: NO
-- Extra dependencies: m pthread cudart_static dl rt nppc nppial nppicc nppidei nppif nppig nppim nppist nppisu nppitc npps cublas cudnn cufft -L/usr/local/cuda-13.2/lib64 -L/usr/lib/aarch64-linux-gnu
-- 3rdparty dependencies:
--
-- OpenCV modules:
-- To be built: alphamat aruco bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape signal stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab wechat_qrcode xfeatures2d ximgproc xobjdetect xphoto
-- Disabled: world
-- Disabled by dependency: -
-- Unavailable: cannops cvv fastcv hdf java julia matlab ovis python2 sfm viz
-- Applications: apps
-- Documentation: NO
-- Non-free algorithms: YES
--
-- GUI: GTK3
-- GTK+: YES (ver 3.24.41)
-- OpenGL support: YES (/usr/lib/aarch64-linux-gnu/libGL.so /usr/lib/aarch64-linux-gnu/libGLU.so)
-- VTK support: NO
--
-- Media I/O:
-- ZLib: /usr/lib/aarch64-linux-gnu/libz.so (ver 1.3)
-- JPEG: /usr/lib/aarch64-linux-gnu/libjpeg.so (ver 2.1.5-80)
-- WEBP: /usr/lib/aarch64-linux-gnu/libwebp.so (ver decoder: 0x0209, encoder: 0x020f, demux: 0x0107)
-- AVIF: NO
-- PNG: /usr/lib/aarch64-linux-gnu/libpng.so (ver 1.6.43)
-- Metadata Support: EXIF XMP ICC
-- TIFF: /usr/lib/aarch64-linux-gnu/libtiff.so (ver 42 / 4.5.1)
-- JPEG 2000: build (ver 2.5.3)
-- OpenEXR: OpenEXR::OpenEXR (ver 3.1.5)
-- GIF: YES
-- HDR: YES
-- SUNRASTER: YES
-- PXM: YES
-- PFM: YES
--
-- Video I/O:
-- FFMPEG: YES
-- avcodec: YES (62.11.100)
-- avformat: YES (62.3.100)
-- avutil: YES (60.8.100)
-- swscale: YES (7.5.100)
-- avdevice: YES (62.1.100)
-- GStreamer: YES (1.24.2)
-- v4l/v4l2: YES (linux/videodev2.h)
-- Orbbec: YES
--
-- Parallel framework: pthreads
--
-- Trace: YES (with Intel ITT(3.25.4))
--
-- Other third-party libraries:
-- Lapack: NO
-- Eigen: YES (ver 3.4.0)
-- Custom HAL: YES (carotene (ver 0.0.1) KleidiCV (ver 26.03))
-- Protobuf: build (3.19.1)
-- Flatbuffers: builtin/3rdparty (25.9.23)
--
-- NVIDIA CUDA: YES (ver 13.2, CUFFT CUBLAS FAST_MATH)
-- NVIDIA GPU arch: 87
-- NVIDIA PTX archs:
--
-- cuDNN: YES (ver 9.20.0)
--
-- OpenCL: YES (no extra features)
-- Include path: /home/jetson/dev/opencv-4.14.0/3rdparty/include/opencl/1.2
-- Link libraries: Dynamic load
--
-- Python 3:
-- Interpreter: /usr/bin/python3 (ver 3.12.3)
-- Libraries: /usr/lib/aarch64-linux-gnu/libpython3.12.so (ver 3.12.3)
-- Limited API: NO
-- numpy: /usr/lib/python3/dist-packages/numpy/core/include (ver 1.26.4)
-- install path: lib/python3.12/dist-packages/cv2/python-3.12
--
-- Python (for build): /usr/bin/python3
--
-- Java:
-- ant: NO
-- Java: NO
-- JNI: NO
-- Java wrappers: NO
-- Java tests: NO
--
-- Install to: /usr/local
-- -----------------------------------------------------------------
--
另外,配置结果显示:
Lapack: NO
Eigen: YES (ver 3.4.0)
虽然安装了 liblapack-dev,但本次 OpenCV 配置并没有启用 LAPACK。安装依赖包并不代表对应功能一定会被 CMake 检测并启用。
需要注意,WITH_CUDA=ON 也不意味着所有 OpenCV 算法都会自动使用 GPU。具体模块是否提供 CUDA 实现,仍需参考相应模块的功能和 API。
五、编译与安装
1. 编译
在构建目录中执行:
cd ~/dev/opencv-4.14.0/build
make -j6
本次编译耗时约 1 小时 15 分钟。
4GB 的内存比较有限,可能出现内存不足。建议提前准备足够的交换空间(Swap),
-j6 表示最多并行执行 6 个构建任务。若出现 OOM(内存不足)或编译进程被系统终止,可以尝试降低并行度,例如:
make -j2
2. 安装
编译成功后执行:
sudo make install
sudo ldconfig
make install 将库文件、头文件和其他构建产物安装到 /usr/local;ldconfig 用于刷新动态链接器缓存。
六、验证安装结果
1. 查看 Python 接口
执行:
python3 -c 'import cv2; print(cv2.__version__); print(cv2.__file__)'
我的输出:
4.14.0
/usr/local/lib/python3.12/dist-packages/cv2/__init__.py
正常情况下应显示 OpenCV 版本 4.14.0,并给出当前实际导入的 cv2 模块路径。
如果版本或路径不符合预期,需要检查是否导入了系统中其他版本的 OpenCV。
如果需要可以复用的wheel包可以参考我的另一篇博客。
2. 查看编译功能
执行:
python3 -c 'import cv2; print(cv2.getBuildInformation())'
该命令会输出当前 Python 实际加载的 OpenCV 的完整编译信息,可用于检查 CUDA、cuDNN、FFmpeg、GStreamer、Python 等功能。
3. 使用 jtop 查看设备状态
如果已经安装 jetson-stats,可以运行:
jtop

浙公网安备 33010602011771号