Jetson Orin NX 开发指南(5): 安装 OpenCV 4.6.0 并配置 CUDA 以支持 GPU 加速

一、前言

Jetson 系列的开发板 CPU 性能不是很强,往往需要采用 GPU 加速的方式处理图像数据,因此本文主要介绍如何安装带有 GPU 加速的 OpenCV,其中 GPU 加速通过 CUDA 来实现。

参考博客

Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0-CSDN博客Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0https://blog.csdn.net/qq_44998513/article/details/131462679

二、安装 OpenCV 4.6.0

下载 opencv 源码,选择所需要的版本 opencv 4.6.0,相应的扩展 opencv_contrib 4.6.0,以及用于桥接 ROS 和 opencv 的 cv_bridge

Release OpenCV 4.6.0 · opencv/opencv · GitHub

Release 4.6.0 · opencv/opencv_contrib · GitHub

GitHub - ros-perception/vision_opencv at noetic

这里将 opencv 4.6.0 以及相应的扩展 opencv_contrib 4.6.0 下载到 ~/Documents 目录下,编译前现确定 opencv 的安装路径,我的安装路径是

CMAKE_INSTALL_PREFIX=/usr/local/

确定 Jetson Orin NX 的算力为 8.7,这个后面要用,参考

CUDA GPUs - Compute Capability | NVIDIA Developer

安装cuda 可以参考上一期文章

Jetson Orin NX 开发指南(4): 安装 cuda 和 realsense_想要个小姑娘的博客-CSDN博客

如果需要安装其他版本的 cuda 与算力的匹配情况可以参考

支持CUDA运算的显卡算力表_cuda算力排行_听风三千里的博客-CSDN博客

https://en.wikipedia.org/wiki/CUDA#GPUs_supported

接下来,进入 opencv 4.6.0 文件夹

cd ~/Documents/opencv-4.6.0/
mkdir build && cd build

预编译 opencv 4.6.0 及其扩展模块 opencv_contrib-4.6.0,生成 Makefiles 文件

cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=/usr/local/ \
        -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.6.0/modules \
        -D WITH_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_LIBV4L=ON \
        -D WITH_GSTREAMER=ON \
        -D WITH_GSTREAMER_0_10=OFF \
        -D WITH_QT=ON \
        -D WITH_OPENGL=ON \
        -D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" \
        -D WITH_TBB=ON \
        ..

其中

CMAKE_INSTALL_PREFIX=/usr/local/ 为安装地址,

OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.6.0/modules 为扩展模块所在路径,

CUDA_ARCH_BIN=8.7 为 GPU 算力,

编译完成后如下所示

 然后 make install 编译安装 opencv 4.6.0 及其扩展模块 opencv_contrib-4.6.0,电脑性能好的话可以多核编译 make -j8,如果出现兼容性错误的花建议用 make,速度慢一点,终端输入

sudo make install -j8

这里编译会很慢,耐心等待,只要一开始没有什么报错后面就不会报错。

经过漫长的等待,最后编译安装完成后如上所示,最后可以打开 jtop 查看带 GPU 加速的 OpenCV 是否已经安装完成,终端输入

jtop

点击最下反的 7 INFO 我们发现 OpenCV: 4.6.0 with CUDA: YES 表示以及安装成功!

三、配置 cv_bridge 功能包

因为 opencv 的数据和 ROS 的数据需要转化,因此需要通过 cv_bridge 这个桥接工具,接下来我们介绍怎么自己下载安装并配置一个自己的 cv_bridge 功能包。

首先,创建一个 ROS 的工作空间

mkdir -p ~/catkin_pkg/src/
cd ~/catkin_pkg/src/

然后,下载对应版本的源码,因为是 JetPack 5.1.2 对应 Ubuntu 20.04 因此下载 noetic 版本

GitHub - ros-perception/vision_opencv at noetic

终端输入

git clone https://github.com/ros-perception/vision_opencv.git -b noetic

下载完成后因为我们只需要 cv_bridge,所以只需保留 cv_bridge 文件夹,将其放在 ~/catkin_pkg/src/ 目录下,然后修改一下 cv_bridge 的配置文件,终端输入

cd ~/catkin_pkg/src/cv_bridge/
gedit ./CMakeLists.txt

添加自己安装的 带有 GPU 加速的 OpenCV 的 build 文件的路径

include("~/Documents/opencv-4.6.0/build/OpenCVConfig.cmake")

 添加在 CMakeLists.txt 文件的如下位置,

保存后编译该功能包,终端输入

cd ~/catkin_pkg/
catkin_make

如下结果表明编译成功

编译完成后将其路径添加到 ~/.bashrc 文件中,并刷新环境变量

echo "source ~/catkin_pkg/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

至此,自己的 cv_bridge 功能包就制作完成了,如果需要使用别的版本的 OpenCV,只需将 cv_bridge 中 include("~/Documents/opencv-4.6.0/build/OpenCVConfig.cmake") 修改为相应的路径。

<think>好的,我现在需要帮助用户在Jetson Orin NX安装配置支持CUDA加速OpenCV。首先,我得回顾一下用户提供的引用内容,看看有哪些步骤和注意事项。用户提供了四个引用,都是关于在Jetson设备上安装OpenCV的教程,其中提到需要安装支持CUDA的版本,因为自带的可能不支持。 首先,用户需要安装支持CUDAOpenCV,可能需要从源码编译。根据引用[1]和[3],Jetson自带的OpenCV可能不支持CUDA,所以必须手动安装。用户提供的引用中提到了不同的版本,比如4.10.04.6.04.5.4,所以需要确认用户想安装哪个版本,但用户没有指定,可能需要建议一个稳定版本,比如4.5.44.6.0。 接下来,安装步骤大致包括:安装依赖项、下载源码、配置CMake选项(确保启用CUDA支持)、编译和安装,以及配置环境变量。引用[4]提到了编译后需要配置ld.so.conf和运行ldconfig,还有可能遇到头文件缺失的问题,比如opencv/cv.h,这可能是因为旧版头文件路径的问题,需要注意OpenCV版本是否兼容。 然后,我需要按照这些步骤组织回答,确保每一步都清晰,且引用正确的来源。同时,用户可能需要知道如何处理常见问题,比如编译错误或环境配置问题。例如,引用[4]中的fatal error可能是因为头文件路径不正确,需要检查安装路径是否正确添加到包含路径中。 另外,用户可能还需要安装cv_bridge,如引用[3]提到的,但用户的问题主要是安装OpenCV,所以可能暂时不需要深入这部分,除非用户后续提问相关问题。 最后,生成相关问题需要考虑用户在安装过程中可能遇到的后续问题,比如性能优化、验证安装是否正确、常见错误处理等。根据引用中的内容,可以提出关于性能分析、不同版本的选择、头文件错误处理等问题。 需要注意的是,所有行内数学表达式要用$...$,独立公式用$$...$$,但在这个问题中可能涉及代码和命令较多,数学公式较少。不过如果有提到算法或计算,比如编译时的线程数设置,可能需要用公式表示,但这里可能不需要。 现在,我需要将上述思考整理成一个结构清晰的回答,分步骤说明安装过程,引用提供的资料,最后生成相关问题。</think>### 在 Jetson Orin NX安装配置 OpenCV 的步骤 以下是基于引用内容的详细流程,支持 CUDA 加速OpenCV 安装方法: --- #### **1. 安装系统依赖** 首先安装编译 OpenCV 所需的基础工具和依赖库: ```bash sudo apt update sudo apt install -y cmake build-essential git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev ``` --- #### **2. 下载 OpenCV 源码** 选择一个稳定版本(例如 OpenCV 4.6.0),从 GitHub 克隆源码: ```bash git clone --branch 4.6.0 https://github.com/opencv/opencv.git git clone --branch 4.6.0 https://github.com/opencv/opencv_contrib.git ``` --- #### **3. 配置 CMake 启用 CUDA 支持** 进入 OpenCV 源码目录,创建 `build` 文件夹配置 CMake: ```bash cd opencv mkdir build && cd build cmake \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON \ # 启用 CUDA 加速 -D CUDA_ARCH_BIN=8.7 \ # Jetson Orin NXCUDA 架构版本 -D ENABLE_FAST_MATH=ON \ -D WITH_CUDNN=ON \ # 启用 cuDNN 加速 -D OPENCV_GENERATE_PKGCONFIG=ON \ # 生成 pkg-config 文件 -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules .. ``` **注意**: - `CUDA_ARCH_BIN` 需根据 Jetson Orin NXGPU 架构设置(可通过 `jtop` 查看)[^2][^4]。 - 若需更多功能(如 Python 绑定),可添加 `-D BUILD_opencv_python3=ON`。 --- #### **4. 编译与安装** 使用多线程加速编译(根据硬件选择线程数,如 `-j6`): ```bash make -j$(nproc) sudo make install ``` 编译时间较长(约 1-2 小时),确保设备供电稳定。 --- #### **5. 配置环境变量** 更新动态链接库验证安装: ```bash sudo ldconfig # 验证 OpenCV 版本及 CUDA 支持 pkg-config --modversion opencv4 ``` 若输出类似 `4.6.0` 且 CUDA 标志为 `ON`,则安装成功[^3][^4]。 --- #### **6. 解决常见问题** - **头文件缺失错误**:若出现 `fatal error: opencv/cv.h: No such file or directory`,需确认安装路径是否正确,检查代码是否兼容 OpenCV 4.x 的头文件路径(如 `#include <opencv2/core.hpp>`)[^4]。 - **性能验证**:使用 `jtop` 工具查看 GPU 利用率,确认 CUDA 加速是否生效。 --- ###
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值