ubuntu22.04@Jetson Orin Nano之OpenCV安装

本文详细描述了在JetsonOrinNano上安装OpenCV4.9.0并确认GPU支持的过程,包括解决Ubuntu22.04环境中的问题、使用jtop检查GPU状态和安装步骤,以及针对国内环境的调整措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 源由

昨天用Jetson跑demo程序发现帧率很慢(只有10FPS左右),按照视频文件怎么说应该有30FPS。但是为什么jetson orin nano跑不起来呢???

dnn_object_detection_embedded_device

想着,估计是GPU没有跑起来,正好凑着调试了下板子,记录、整理下资料。

2. 分析

从现象上看,OpenCV运行的时候没有跑GPU,从而导致高价买的Jetson Orin Nano连这么简单的Demo都跑不起来。

接下来,就先看下板子运行的环境:

  • ubuntu22.04/jammy/aarch64
$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.4 LTS
Release:	22.04
Codename:	jammy

$ uname -a
Linux daniel-nvidia 5.15.122-tegra #1 SMP PREEMPT Mon Dec 18 21:24:25 PST 2023 aarch64 aarch64 aarch64 GNU/Linux
  • OpenCV版本:4.8.0
$ opencv_version
4.8.0

$ python3
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
4.8.0
>>> 
  • 安装最新OpenCV4.9.0版本
  1. 与之前《ubuntu22.04@laptop OpenCV安装》版本一致
  2. 安装或者升级Jetson Orin Nano上OpenCV4.8.0版本
  3. 官方论坛讨论:NVIDIA: install OpenCV for python3 in Jetson Nano
  4. Google的网上资料:Install OpenCV on Jetson Nano
  5. Google的教学视频

OpenCV with CUDA in Python on Jetson

3. 证实

要正式是否真的是OpenCV库对GPU的支持问题导致前面验证FPS帧率低,那么就需要通过jtop指令来查看。

有朋友问:你怎么知道的这些?
Ans: 其实我并不知道,是我搜出来的。其实就这么简单,并不是我知道的多,是网上这些问题很多人都已经早就解决了。即使真的有没有人解决的,那么也是有办法的,只不过思路和这个不太一样。

3.1 jtop安装

$ pip3 --version
$ sudo -H pip3 install --no-cache-dir jetson-stats
$ sudo systemctl restart jtop.service
$ sudo reboot

注:一定要重启板子,否则无效。

3.2 jtop指令

$ jtop -h
usage: jtop [-h] [--health] [--error-log] [--no-warnings] [--restore] [--loop] [--color-filter] [-r REFRESH] [-p PAGE] [-v]

jtop is system monitoring utility and runs on terminal

options:
  -h, --help            show this help message and exit
  --health              Status jtop and fix (default: False)
  --error-log           Generate a log for GitHub (default: False)
  --no-warnings         Do not show warnings (default: False)
  --restore             Reset Jetson configuration (default: False)
  --loop                Automatically switch page every 5s (default: False)
  --color-filter        Change jtop base colors, you can use also JTOP_COLOR_FILTER=True (default: False)
  -r REFRESH, --refresh REFRESH
                        refresh interval (default: 1000)
  -p PAGE, --page PAGE  Open fix page (default: 1)
  -v, --version         show program's version number and exit

3.3 GPU支持情况

OpenCV: 4.8.0 with CUDA: NO,所以该版本不支持GPU。

在这里插入图片描述

4. 安装OpenCV

两个链接脚本供参考安装:

  1. JetsonHacksNano/buildOpenCV
  2. mdegans/nano_build_opencv

为了更好的配合我们的例子,就整合到SnapLearnOpenCV/scripts中供大家参考,上述脚本支持:

  • 笔记本电脑(64位普通CPU)安装:install_opencv_for_laptop.shubuntu22.04@laptop OpenCV安装
  • AI最火的(Jetson Orin Nano)安装:install_opencv_for_jetson.sh

4.1 修改内容

$ git diff
diff --git a/build_opencv.sh b/build_opencv.sh
index c12bb40..891eea3 100755
--- a/build_opencv.sh
+++ b/build_opencv.sh
@@ -45,8 +45,8 @@ setup () {

 git_source () {
     echo "Getting version '$1' of OpenCV"
-    git clone --depth 1 --branch "$1" https://github.com/opencv/opencv.git
-    git clone --depth 1 --branch "$1" https://github.com/opencv/opencv_contrib.git
+    git clone --depth 1 --branch "$1" git@github.com:opencv/opencv.git
+    git clone --depth 1 --branch "$1" git@github.com:opencv/opencv_contrib.git
 }

 install_dependencies () {
@@ -63,9 +63,8 @@ install_dependencies () {
         libatlas-base-dev \
         libavcodec-dev \
         libavformat-dev \
-        libavresample-dev \
         libcanberra-gtk3-module \
-        libdc1394-22-dev \
+        libdc1394-dev \
         libeigen3-dev \
         libglew-dev \
         libgstreamer-plugins-base1.0-dev \
@@ -90,8 +89,6 @@ install_dependencies () {
         libxvidcore-dev \
         libx264-dev \
         pkg-config \
-        python-dev \
-        python-numpy \
         python3-dev \
         python3-numpy \
         python3-matplotlib \
@@ -103,14 +100,13 @@ install_dependencies () {
 configure () {
     local CMAKEFLAGS="
         -D BUILD_EXAMPLES=OFF
-        -D BUILD_opencv_python2=ON
         -D BUILD_opencv_python3=ON
         -D CMAKE_BUILD_TYPE=RELEASE
         -D CMAKE_INSTALL_PREFIX=${PREFIX}
         -D CUDA_ARCH_BIN=5.3,6.2,7.2,8.7
         -D CUDA_ARCH_PTX=
         -D CUDA_FAST_MATH=ON
-        -D CUDNN_VERSION='8.0'
+        -D CUDNN_VERSION='8.9'
         -D EIGEN_INCLUDE_PATH=/usr/include/eigen3
         -D ENABLE_NEON=ON
         -D OPENCV_DNN_CUDA=ON

4.2 Python2环境【不需要】

  • python2环境:python-dev python-numpy
  • OpenCV编译选项:-D BUILD_opencv_python2=ON

4.3 ubuntu22.04环境

  • libavresample-dev
  • libdc1394-22-dev变更为libdc1394-dev

4.4 国内/本地环境问题

  • 将https链接调整为git库链接
-    git clone --depth 1 --branch "$1" https://github.com/opencv/opencv.git
-    git clone --depth 1 --branch "$1" https://github.com/opencv/opencv_contrib.git
+    git clone --depth 1 --branch "$1" git@github.com:opencv/opencv.git
+    git clone --depth 1 --branch "$1" git@github.com:opencv/opencv_contrib.git
  • git库采用git协议才能下载
$ git config --global "url.ssh://git@ssh.github.com:443/.insteadOf" git@github.com:

4.5 cudnn版本问题

《Linux 36.2@Jetson Orin Nano基础环境构建》安装的是8.9.4.25.

-        -D CUDNN_VERSION='8.0'
+        -D CUDNN_VERSION='8.9'

5. 总结

修改完上述脚本后,可以直接执行脚本指令:

$ git clone git@github.com:mdegans/nano_build_opencv.git
$ cd nano_build_opencv
$ nano build_opencv.sh
$ ./build_opencv.sh

或者
$ git clone git@github.com:SnapDragonfly/SnapLearnOpenCV.git
$ cd SnapLearnOpenCV/scripts
$ ./install_opencv_for_jetson.sh

大致耗时约1个小时???没有计时,反正也挺快的。执行opencv_version python jtop指令:

$ echo $PATH
/home/daniel/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

$ opencv_version
4.9.0

$ python 
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
4.9.0
>>> 

$ jtop

在这里插入图片描述

最后,关于使用GPU和使用CPU对Demo的影响:

dnn_object_detection_jetson_orin_nano

注:本次环境安装为遇到默认路径导致的优先级问题。

6. 参考资料

【1】ubuntu22.04@laptop OpenCV安装
【2】Linux 36.2@Jetson Orin Nano之基础环境构建
【3】ubuntu22.04@laptop OpenCV定制化安装
【4】Github操作网络异常笔记

<think>好的,我现在需要处理用户关于Jetson Orin NX的开箱体验和入门设置的问题。首先,用户提供的参考引用中有三个相关的信息点,我需要仔细分析这些信息,并整合到回答中。 首先,用户提到引用[1]指出在系统烧录时必须选择NVMe存储设备,不能使用SD卡,因为Orin NX没有eMMC存储。这意味着在烧录系统镜像时,用户必须确保正确选择NVMe驱动器,否则会导致报错。这一点非常重要,应该在步骤中强调,避免用户犯错。 接下来,引用[2]提到用户使用的是2GB版本的Jetson Nano,并在其中选择了对应的开发者套件。虽然Orin NX可能有不同配置,但这里可能需要类比说明,比如在烧录工具中选择正确的硬件型号,确保兼容性。需要确认Orin NX的版本是否有类似的选择,但根据用户的问题,重点应放在Orin NX的设置上,可能需要调整这一点,避免混淆。 然后,引用[3]涉及无显示器启动时的GPU加速问题,用户安装了特定的虚拟输出驱动。这说明在无头模式下设置Orin NX时,可能需要安装xserver-xorg-video-dummy等软件包,并正确配置以避免GPU无法加速的问题。这部分应该放在系统配置或远程访问的步骤中,指导用户如何正确设置虚拟显示环境。 接下来,我需要构建一个结构清晰的入门设置指南。通常,开箱后的步骤包括:硬件准备、系统烧录、初次启动与系统配置、组件安装、远程访问设置等。根据引用内容,系统烧录部分需要特别注意存储设备的选择,必须使用NVMe。初次启动后可能需要安装必要的组件,如JetPack SDK中的CUDA、cuDNN等。此外,无显示器启动需要配置虚拟显示驱动,确保GPU正常工作。 需要注意,用户可能不熟悉烧录工具的使用,如SDK Manager的操作步骤,需要详细说明。比如下载正确的镜像,连接设备到主机,选择正确的存储设备等。同时,引用[1]中的错误提示是因为选择了SD卡,必须强调这一点,防止用户重复错误。 在组件安装部分,可能需要安装系统更新、必要的库和工具,如Python、OpenCV等。另外,引用[3]提到的xserver-xorg-video-dummy安装步骤,应详细说明命令和配置文件的修改,确保用户能正确应用。 关于远程访问,可能需要设置SSH或VNC,特别是无显示器情况下,这部分对用户来说可能比较重要。需要指导如何启用SSH,配置网络,或者使用虚拟显示驱动来实现远程桌面访问。 最后,生成的相关问题需要围绕用户可能遇到的后续问题,比如烧录失败怎么办,如何优化系统性能,无显示器配置的常见问题等。这些问题应该基于用户提供的引用内容,确保覆盖可能的需求。 现在,我需要确保回答符合系统级指令:使用正确的中文,数学公式格式正确(虽然这个问题可能不涉及公式),引用标识自然添加。同时,结构清晰,步骤详细,帮助用户逐步完成设置,并引用提供的参考资料中的信息。 在检查过程中,需确认每个引用都被正确引用,例如在系统烧录步骤末尾添加[^1],在无显示器配置部分引用[^3]。同时,确保没有使用任何Markdown格式,行内代码用反引号标注,独立代码块使用三个反引号并指定语言。 可能存在的疑问点:用户提到的Jetson Orin NX是否有不同存储配置?是否所有版本都无eMMC?根据引用[1],似乎所有Orin NX都没有eMMC,因此必须使用NVMe。需要确认这一点,但根据提供的引用,应该直接引用该信息,避免猜测。 另外,用户提供的引用[2]是关于Jetson Nano 2GB的,可能与Orin NX不同,但用户可能误植,所以处理时需要区分,确保回答针对Orin NX,而不是Nano。因此,在回答中应明确说明适用于Orin NX的步骤,避免混淆。 综上所述,回答的结构大致如下: 1. 开箱硬件准备:列出组件,检查NVMe SSD。 2. 系统烧录:使用SDK Manager,选择NVMe,避免SD卡,引用[1]。 3. 初次启动:连接外设,完成Ubuntu初始化。 4. 系统配置:更新系统,安装必要组件。 5. 无显示器设置:安装虚拟显示驱动,引用[3]。 6. 远程访问:配置SSH或VNC。 7. 组件安装:SDK组件如CUDA等。 8. 常见问题提示。 相关问题部分则围绕烧录问题、性能优化、应用场景等生成问题。</think>### Jetson Orin NX 开箱与入门设置指南 #### 1. **硬件准备与开箱检查** - **开箱组件**:确认包含Jetson Orin NX主板、电源适配器(需支持20V/6A)、散热模块(部分型号需自行安装)、NVMe SSD(若未预装需自行购买)。 - **存储设备**:必须使用NVMe SSD,**不可使用SD卡**(Jetson Orin NX无eMMC存储)。 --- #### 2. **系统烧录与安装** 1. **下载工具与镜像**: - 在Ubuntu主机安装[NVIDIA SDK Manager](https://developer.nvidia.com/sdk-manager),选择“Jetson Orin NX”型号和对应JetPack版本(如5.1.2)。 2. **连接设备**: - 通过USB-C线将Orin NX连接至主机,并进入恢复模式(按住Recovery键后短按Reset键)。 3. **烧录系统**: - 在SDK Manager中选择“NVMe”作为存储设备(**勿选SD Card**,否则会报错)。 - 完成烧录后,根据提示配置用户名、密码等基础信息。 --- #### 3. **初次启动与系统配置** 1. **连接外设**:接入显示器(HDMI/DP)、键盘、鼠标。 2. **初始化Ubuntu**: - 完成系统语言、时区等设置。 3. **更新系统**: ```bash sudo apt update && sudo apt upgrade -y ``` --- #### 4. **无显示器启动配置(Headless模式)** 若需无显示器运行,需安装虚拟显示驱动以启用GPU加速[^3]: 1. 安装依赖: ```bash sudo apt-get install xserver-xorg-core-hwe-18.04 xserver-xorg-video-dummy ``` 2. 配置虚拟显示: - 创建配置文件`/usr/share/X11/xorg.conf.d/xorg.conf`,内容参考[NVIDIA官方文档](https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/index.html#headless-mode)。 --- #### 5. **远程访问设置** 1. **启用SSH**: ```bash sudo systemctl enable ssh && sudo systemctl start ssh ``` 2. **配置VNC(可选)**: - 安装TightVNC或RealVNC,并设置远程桌面服务。 --- #### 6. **组件安装与开发环境配置** 1. **安装JetPack组件**: - 通过SDK Manager勾选“Jetson OS + SDK Components”,安装CUDA、cuDNN、TensorRT等组件。 2. **验证GPU驱动**: ```bash nvidia-smi # 查看GPU状态 ``` 3. **安装常用工具**: ```bash sudo apt-get install python3-pip git cmake ``` --- #### 常见问题提示 - **烧录失败**:确保主机为Ubuntu 20.04/22.04,且Orin NX处于恢复模式。 - **无显示输出**:检查虚拟显示配置或尝试通过SSH远程连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值