ubuntu22.04@Jetson OpenCV安装
ubuntu22.04@Jetson OpenCV安装
- 1. 源由
- 2. 分析
- 3. 证实
- 3.1 jtop安装
- 3.2 jtop指令
- 3.3 GPU支持情况
- 4. 安装OpenCV
- 4.1 修改内容
- 4.2 Python2环境【不需要】
- 4.3 ubuntu22.04环境
- 4.4 国内/本地环境问题
- 4.5 cudnn版本问题
- 5. 总结
- 6. 参考资料
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版本
- 与之前《ubuntu22.04@laptop OpenCV安装》版本一致
- 安装或者升级Jetson Orin Nano上OpenCV4.8.0版本
- 官方论坛讨论:NVIDIA: install OpenCV for python3 in Jetson Nano
- Google的网上资料:Install OpenCV on Jetson Nano
- Google的教学视频
OpenCV with CUDA in Python on Jetson
3. 证实
要正式是否真的是OpenCV库对GPU的支持问题导致前面验证FPS帧率低,那么就需要通过jtop指令来查看。
有朋友问:你怎么知道的这些?
Ans: 其实我并不知道,是我搜出来的。其实就这么简单,并不是我知道的多,是网上这些问题很多人都已经早就解决了。即使真的有没有人解决的,那么也是有办法的,只不过思路和这个不太一样。
- NVIDIA: Jtop install fail
- NVIDIA: Where can I find these numbers in CUDA_ARCH_BIN?
- NVIDIA: Your GPU Compute Capability
- NVIDIA: OpenCV build script
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 terminaloptions:-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 REFRESHrefresh 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
两个链接脚本供参考安装:
- JetsonHacksNano/buildOpenCV
- mdegans/nano_build_opencv
为了更好的配合我们的例子,就整合到SnapLearnOpenCV/scripts中供大家参考,上述脚本支持:
- 笔记本电脑(64位普通CPU)安装:
install_opencv_for_laptop.sh– ubuntu22.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-devpython-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操作网络异常笔记
相关文章:
ubuntu22.04@Jetson OpenCV安装
ubuntu22.04Jetson OpenCV安装 1. 源由2. 分析3. 证实3.1 jtop安装3.2 jtop指令3.3 GPU支持情况 4. 安装OpenCV4.1 修改内容4.2 Python2环境【不需要】4.3 ubuntu22.04环境4.4 国内/本地环境问题4.5 cudnn版本问题 5. 总结6. 参考资料 1. 源由 昨天用Jetson跑demo程序发现帧率…...
OpenGL学习——17.模型
前情提要:本文代码源自Github上的学习文档“LearnOpenGL”,我仅在源码的基础上加上中文注释。本文章不以该学习文档做任何商业盈利活动,一切著作权归原作者所有,本文仅供学习交流,如有侵权,请联系我删除。L…...
6.2 数据库
本节介绍Android的数据库存储方式--SQLite的使用方法,包括:SQLite用到了哪些SQL语法,如何使用数据库管理操纵SQLitem,如何使用数据库帮助器简化数据库操作,以及如何利用SQLite改进登录页面的记住密码功能。 6.2.1 SQ…...
计算机设计大赛 深度学习人体跌倒检测 -yolo 机器视觉 opencv python
0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的人体跌倒检测算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满…...
本地模拟发送、接收RabbitMQ数据
文章目录 前言一、相关文章二、相关代码1.模拟的 Channel 类2.接收消息3.模拟推送MQ数据前言 日常开发中,当线上RabbitMQ坏境还没准备好时,可在本地模拟发送、接收消息 一、相关文章 Docker安装RabbitMQ 【SpringCloud】整合RabbitMQ六大模式应用(入门到精通) Spring R…...
前端 webSocket 的使用
webSocket使用 注意要去监听websocket 对象事件,处理我们需要的数据 我是放在了最外层的index 内,监听编辑状态,去触发定义的方法。因为我这个项目是组件化开发,全部只有一个总编辑按钮,我只需监听是否触发了编辑即可…...
opencv图像处理(一)
一. OpenCV 简介 OpenCV 是一个跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 应用领域 1、人机互动 2、物体识别 3、图像分割 4、人脸识别 5、动作识别 6、运动跟踪 7、机器人 8、运动分析 9、机器视觉 10、…...
消息队列-RabbitMQ:workQueues—工作队列、消息应答机制、RabbitMQ 持久化、不公平分发(能者多劳)
4、Work Queues Work Queues— 工作队列 (又称任务队列) 的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。我们把任务封装为消息并将其发送到队列,在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作…...
前端秘法基础式(HTML)(第二卷)
目录 一.表单标签 1.表单域 2.表单控件 2.1input标签 2.2label/select/textarea标签 2.3无语义标签 三.特殊字符 一.表单标签 用来完成与用户的交互,例如登录系统 1.表单域 <form>通过action属性,将用户填写的数据转交给服务器 2.表单控件 2.1input标签 type…...
PTA-统计英文字母和数字字符[2]
本题要求编写程序,输入N个字符,统计其中英文字母、数字字符和其他字符的个数。 输入格式: 输入在第一行中给出正整数N,第二行输入N个字符,最后一个回车表示输入结束,不算在内。 输出格式: 在一行内按照 letter 英…...
Elasticsearch:将 IT 智能和业务 KPI 与 AI 连接起来 - 房间里的大象
作者:Fermi Fang 大象寓言的智慧 在信息技术和商业领导力的交叉点,蒙眼人和大象的古老寓言提供了一个富有洞察力的类比。 这个故事起源于印度次大陆,讲述了六个蒙住眼睛的人第一次遇到大象的故事。 每个人触摸大象的不同部位 —— 侧面、象牙…...
基于芯驰 X9HP PTG4.1 在 yocto 中添加 Linux 应用
1.参考例程并添加应用 1.1 参考例程 (1)查看自带的串口测试例程 uart_test ,查看 bb 文件怎么写的。 1.2 添加 printf-test 应用 (1)在 yocto/meta-semidrive/recipes-bsp/ 目录中 copy 自带例程 uart-test 改名为 …...
【微服务安全】OpenID Connect 简介:现代应用程序的身份验证
OpenID Connect (OIDC) 是一个建立在 OAuth 2.0 之上的开放身份验证协议。它简化了应用程序以一种标准化和可互操作的方式验证用户身份并获取其基本个人资料信息的方式。可以将其视为应用程序“知道你是谁”的一种安全方式,而无需你创建单独的帐户或透露你的密码。 …...
Linux系统中HTTP隧道的搭建与配置步骤:穿越网络的“魔法隧道”
在Linux系统中搭建HTTP隧道,就像是开启了一条穿越网络的“魔法隧道”。这条隧道能让你的数据在网络中自由穿梭,无论是远程办公还是数据同步,都能变得轻松自在。下面,就让我们一起探索如何搭建这条神奇的“魔法隧道”吧!…...
fastApi笔记04-查询参数和字符串校验
额外校验 使用Query可以对查询参数添加校验 from typing import Unionfrom fastapi import FastAPI, Queryapp FastAPI()app.get("/items/") async def read_items(q: Union[str, None] Query(defaultNone, max_length50)):results {"items": [{"…...
笔记 记录
前言 个人记录 官网模版 基于 vue2 示例图...
相机图像质量研究(38)常见问题总结:编解码对成像的影响--呼吸效应
系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…...
MQTT协议-ISO标准下基于发布/订阅范式的消息协议
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。 MQTT是一个…...
手动实现new操作符
<script>//前置知识// 每一个函数在创建之初就会有一个prototype属性,这个属性指向函数的原型对象// function abc(){// }// abc.prototype--> {constructor: f}// 在JS中任意的对象都有内置的属性叫做[[prototype]]这是一个私有属性,这个私有属…...
【flutter】环境安装
安装flutter sdk 下载sdk flutter sdk就包含dart,所以我们只用安装flutter sdk就可以了。 我们去清华大学开源软件镜像站下载,flutter开发中,版本对不上基本项目就跑步起来,如果是团队协同开发的话,建议统一下载指定版…...
我设计了一套自己的多agent协作体系:星核协作体系
我设计了一套自己的多agent协作体系:星核协作体系 我自己的三省六部制我希望有一个能力强大的个人助手——这是我做星核最初的出发点。 当一个任务需要同时搞定架构设计、内容创作、代码实现、还要确保安全合规,指望一个Agent从头做到尾,基本…...
3小时构建你的神经网络可视化实验室:从零理解CNN内部工作原理
3小时构建你的神经网络可视化实验室:从零理解CNN内部工作原理 【免费下载链接】cnn-explainer Learning Convolutional Neural Networks with Interactive Visualization. 项目地址: https://gitcode.com/gh_mirrors/cn/cnn-explainer 你是否曾困惑于卷积神经…...
数字记忆守护者:GetQzonehistory全攻略
数字记忆守护者:GetQzonehistory全攻略 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 一、数字记忆危机:我们正在失去什么? 在这个信息爆炸的时代&…...
Fluxion多语言支持终极指南:从.lang文件到本地化shell脚本的完整实现
Fluxion多语言支持终极指南:从.lang文件到本地化shell脚本的完整实现 【免费下载链接】fluxion Fluxion is a remake of linset by vk496 with enhanced functionality. 项目地址: https://gitcode.com/gh_mirrors/fl/fluxion Fluxion是一款功能强大的无线网…...
Go OAuth2授权码流程:实现Web应用用户认证的终极指南
Go OAuth2授权码流程:实现Web应用用户认证的终极指南 【免费下载链接】oauth2 Go OAuth2 项目地址: https://gitcode.com/gh_mirrors/oa/oauth2 Go OAuth2授权码流程是现代Web应用用户认证的完整解决方案,为开发者提供了安全、标准化的身份验证机…...
GLM-4.1V-9B-Base快速部署:镜像免配置+7860端口直连使用指南
GLM-4.1V-9B-Base快速部署:镜像免配置7860端口直连使用指南 1. 模型简介 GLM-4.1V-9B-Base是智谱开源的一款强大的视觉多模态理解模型,专门设计用于处理图像内容识别、场景描述、目标问答和中文视觉理解任务。这个模型已经完成了Web化封装,…...
5步快速掌握CodeCombat:游戏化编程学习的终极指南
5步快速掌握CodeCombat:游戏化编程学习的终极指南 【免费下载链接】codecombat Game for learning how to code. 项目地址: https://gitcode.com/gh_mirrors/co/codecombat CodeCombat是一款创新的游戏化编程学习平台,通过将编程学习融入冒险游戏…...
突破格式限制:3种高效NCM转码方案全解析
突破格式限制:3种高效NCM转码方案全解析 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump NCM格式作为网易云音乐的加密音频格式,常导致用户面临设备兼容性差、跨平台播放受阻等问题。本文将通过开源工具实现NC…...
Adobe-GenP 3.0:创新Adobe CC通用补丁解决方案
Adobe-GenP 3.0:创新Adobe CC通用补丁解决方案 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 3.0是一款基于AutoIt脚本开发的Adobe CC通用补…...
React自定义Hook开发:解锁逻辑复用的终极指南
React自定义Hook开发:解锁逻辑复用的终极指南 【免费下载链接】react-fundamentals Material for my React Fundamentals Workshop 项目地址: https://gitcode.com/gh_mirrors/re/react-fundamentals React自定义Hook是提升组件逻辑复用能力的核心技术&#…...
