当前位置: 首页 > news >正文

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版本
  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: 其实我并不知道,是我搜出来的。其实就这么简单,并不是我知道的多,是网上这些问题很多人都已经早就解决了。即使真的有没有人解决的,那么也是有办法的,只不过思路和这个不太一样。

  • 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

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

  1. JetsonHacksNano/buildOpenCV
  2. 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-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操作网络异常笔记

相关文章:

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]

本题要求编写程序&#xff0c;输入N个字符&#xff0c;统计其中英文字母、数字字符和其他字符的个数。 输入格式: 输入在第一行中给出正整数N&#xff0c;第二行输入N个字符&#xff0c;最后一个回车表示输入结束&#xff0c;不算在内。 输出格式: 在一行内按照 letter 英…...

Elasticsearch:将 IT 智能和业务 KPI 与 AI 连接起来 - 房间里的大象

作者&#xff1a;Fermi Fang 大象寓言的智慧 在信息技术和商业领导力的交叉点&#xff0c;蒙眼人和大象的古老寓言提供了一个富有洞察力的类比。 这个故事起源于印度次大陆&#xff0c;讲述了六个蒙住眼睛的人第一次遇到大象的故事。 每个人触摸大象的不同部位 —— 侧面、象牙…...

基于芯驰 X9HP PTG4.1 在 yocto 中添加 Linux 应用

1.参考例程并添加应用 1.1 参考例程 &#xff08;1&#xff09;查看自带的串口测试例程 uart_test &#xff0c;查看 bb 文件怎么写的。 1.2 添加 printf-test 应用 &#xff08;1&#xff09;在 yocto/meta-semidrive/recipes-bsp/ 目录中 copy 自带例程 uart-test 改名为 …...

【微服务安全】OpenID Connect 简介:现代应用程序的身份验证

OpenID Connect (OIDC) 是一个建立在 OAuth 2.0 之上的开放身份验证协议。它简化了应用程序以一种标准化和可互操作的方式验证用户身份并获取其基本个人资料信息的方式。可以将其视为应用程序“知道你是谁”的一种安全方式&#xff0c;而无需你创建单独的帐户或透露你的密码。 …...

Linux系统中HTTP隧道的搭建与配置步骤:穿越网络的“魔法隧道”

在Linux系统中搭建HTTP隧道&#xff0c;就像是开启了一条穿越网络的“魔法隧道”。这条隧道能让你的数据在网络中自由穿梭&#xff0c;无论是远程办公还是数据同步&#xff0c;都能变得轻松自在。下面&#xff0c;就让我们一起探索如何搭建这条神奇的“魔法隧道”吧&#xff01…...

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)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…...

MQTT协议-ISO标准下基于发布/订阅范式的消息协议

MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上&#xff0c;是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议&#xff0c;为此&#xff0c;它需要一个消息中间件 。 MQTT是一个…...

手动实现new操作符

<script>//前置知识// 每一个函数在创建之初就会有一个prototype属性&#xff0c;这个属性指向函数的原型对象// function abc(){// }// abc.prototype--> {constructor: f}// 在JS中任意的对象都有内置的属性叫做[[prototype]]这是一个私有属性&#xff0c;这个私有属…...

【flutter】环境安装

安装flutter sdk 下载sdk flutter sdk就包含dart&#xff0c;所以我们只用安装flutter sdk就可以了。 我们去清华大学开源软件镜像站下载&#xff0c;flutter开发中&#xff0c;版本对不上基本项目就跑步起来&#xff0c;如果是团队协同开发的话&#xff0c;建议统一下载指定版…...

2026时序数据库选型指南:为什么Apache IoTDB成为工业物联网首选

在数字化转型全面加速的今天&#xff0c;工业物联网、车联网、能源电力、智能制造等领域产生了海量的时序数据。这些数据具有高并发写入、海量存储、时间范围查询密集、实时分析要求高等特点&#xff0c;传统的关系型数据库和NoSQL数据库在处理这类数据时往往力不从心。 目录 …...

卡梅德生物技术快报|多肽库筛选:基于全质粒 PCR 的噬菌体文库构建与小分子表位淘选实战

正文摘要本文面向生物研发、实验技术、噬菌体展示方向开发者&#xff0c;系统讲解多肽库筛选完整流程&#xff1a;从问题分析、瓶颈定位、实验方案设计到质控与结果输出&#xff0c;提供可复现的技术方案与关键参数。内容基于真实学位论文研究&#xff0c;聚焦高库容、高多样性…...

CANN Profiling 与性能分析:定位训练与推理瓶颈

一、为什么需要 Profiling 1.1 性能问题的来源 深度学习训练和推理的性能瓶颈可能来自多个环节&#xff1a;数据准备慢导致 GPU 空闲、模型算子计算慢成为瓶颈、内存拷贝频繁拖累整体、通信带宽受限拖慢分布式训练。不同瓶颈的优化方法完全不同&#xff0c;错误的优化方向不仅浪…...

2026年腾讯云OpenClaw/Hermes Agent配置Token Plan搭建保姆教程

2026年腾讯云OpenClaw/Hermes Agent配置Token Plan搭建保姆教程。OpenClaw是开源的个人AI助手&#xff0c;Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...

STM32 HAL库驱动DS18B20避坑指南:单总线时序不准?试试用定时器精准延时

STM32 HAL库驱动DS18B20避坑指南&#xff1a;单总线时序不准&#xff1f;试试用定时器精准延时 在嵌入式开发中&#xff0c;温度传感器DS18B20因其单总线接口和数字输出特性广受欢迎。然而&#xff0c;许多开发者在使用STM32 HAL库驱动DS18B20时&#xff0c;常遇到温度读取失败…...

如何用Seraphine智能游戏助手5分钟提升排位赛胜率:免费英雄联盟战绩查询工具完整指南

如何用Seraphine智能游戏助手5分钟提升排位赛胜率&#xff1a;免费英雄联盟战绩查询工具完整指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 还在为排位赛的BP阶段手忙脚乱吗&#xff1f;每次选英雄时都担…...

3个12位ADC+17个定时器+摄像头接口:STM32F207IGT6的电机控制与机器视觉资源

STM32F207IGT6&#xff1a;176引脚工业级MCU的连接性与性能解析在工业自动化、电机控制以及物联网网关等应用中&#xff0c;MCU的性能不仅取决于主频&#xff0c;更取决于内部总线架构对瓶颈的突破。STM32F207IGT6是意法半导体STM32F2系列中的大容量型号&#xff0c;采用2424mm…...

BarrageGrab:如何构建企业级跨平台直播数据采集系统?

BarrageGrab&#xff1a;如何构建企业级跨平台直播数据采集系统&#xff1f; 【免费下载链接】BarrageGrab 抖音快手bilibili直播弹幕wss直连&#xff0c;非系统代理方式&#xff0c;无需多开浏览器窗口 项目地址: https://gitcode.com/gh_mirrors/ba/BarrageGrab 在直播…...

终极指南:如何3秒破解百度网盘提取码获取难题

终极指南&#xff1a;如何3秒破解百度网盘提取码获取难题 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘分享链接的提取码而烦恼吗&#xff1f;每次找到心仪的学习资料、工作文件或娱乐资源&#xff0c;却卡在…...

2026 渗透测试行业全景解析|机遇、挑战与未来趋势

随着数字化转型的深入和网络威胁的日益复杂化&#xff0c;网络安全渗透测试行业在2025年迎来了前所未有的发展机遇与挑战。本文基于最新行业数据、招聘趋势与技术演进&#xff0c;全面剖析当前渗透测试行业的市场规模、人才供需、薪资水平、技术变革及未来发展方向&#xff0c;…...