ubuntu22.04@Jetson Orin Nano之OpenCV安装

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操作网络异常笔记

  • 29
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jetson Orin环境安装Opencv的步骤如下: 1. 首先,卸载Jetson上自带的无CUDA加速的Opencv。 2. 安装Opencv的依赖库,可以使用以下命令进行安装:sudo apt-get install libgtk2.0-dev pkg-config。 3. 下载Opencvopencv_contrib的源码,并解压得到两个文件夹。 4. 将opencv_contrib文件夹放在opencv文件夹中。 5. 进入opencv的build文件夹,执行cmake命令进行配置。配置命令如下: cmake \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DOPENCV_ENABLE_NONFREE=1 \ -BUILD_opencv_python2=1 \ -DBUILD_opencv_python3=1 \ -DWITH_FFMPEG=1 \ -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \ -DCUDA_ARCH_BIN=8.7 \ -DCUDA_ARCH_PTX=8.7 \ -DWITH_CUDA=1 \ -DENABLE_FAST_MATH=1 \ -DCUDA_FAST_MATH=1 \ -DWITH_CUBLAS=1 \ -DOPENCV_GENERATE_PKGCONFIG=1 \ -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.7.0/modules \ .. 6. 执行make命令进行编译。 7. 如果报错说cvImageshow有问题,可以使用以下命令安装相关依赖库:sudo apt-get install libgtk2.0-dev pkg-config。 8. 重新进入opencv源码文件夹,执行make命令重新编译Opencv。 这样就完成了Jetson Orin环境下Opencv安装。请注意,Opencvopencv_contrib的版本要对应正确。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [Jetson Orin环境安装Opencv+Cuda以及vscode环境配置](https://blog.csdn.net/weixin_43702653/article/details/130627605)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值