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

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 文件的路径

set(OpenCV_DIR "~/Documents/opencv-4.6.0/build/")

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

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

cd ~/catkin_pkg/
catkin_make

如下结果表明编译成功

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

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

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

相关文章:

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.…...

Spring Security 6.x 系列【67】认证篇之安装 ApacheDS

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Spring Security 版本 6.1.0 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 概述2. 安装3. 连接工具1. 概述 官方文档 在前两篇文档中,我们简单了…...

理解线程池源码 【C++】面试高频考点

理解线程池 C 文章目录 理解线程池 C程序源码知识点emplace_back 和 push_back有什么区别?互斥锁 mutexcondition_variablestd::move()函数bind()函数join 函数 线程池的原理就是管理一个任务队列和一个工作线程队列。 工作线程不断的从任务队列取任务,然…...

BP神经网络应用案例

目录 背景介绍 【神经网络符号说明】 【建立网络拓扑结构】 【神经网络学习步骤】 步骤1 准备输入和输出样本 步骤2 确定网络学习参数 步骤3 初始化网络权值W和阀值B 步骤4 计算网络第一层的输入和输出 步骤5 计算中间层(隐含层输入和输出) 步骤…...

日常学习记录随笔-大数据之日志(hadoop)收集实战

数据收集(nginx)--->数据分析---> 数据清洗--->数据聚合计算---数据展示 可能涉及到zabix 做任务调度我们的项目 电商日志分析 比如说我们现在有一个系统,我们的数仓建立也要有一个主题 我这个项目是什么我要干什么定义方向 对用户进行分析,用户信息 要懂整个数据的流…...

【云计算】相关解决方案介绍

文章目录 1.1 云服务环境 Eucalyptus1.1.1 介绍1.1.2 开源协议及语言1.1.3 官方网站 1.2 开源云计算平台 abiCloud1.2.1 开源协议及语言1.2.2 官方网站 1.3 分布式文件系统 Hadoop1.3.1 开源协议及语言1.3.2 官方网站 1.4 JBoss云计算项目集 StormGrind1.4.1 开源协议及语言1.4…...

攻防世界题目练习——Crypto密码新手+引导模式(二)(持续更新)

题目目录 1. 转轮机加密2. easychallenge 上一篇:攻防世界题目练习——Crypto密码新手引导模式(一)(持续更新) 1. 转轮机加密 首先了解一下轮转机加密吧。 传统密码学(三)——转轮密码机 题目内容如下: …...

LeetCode【1】两数之和

题目&#xff1a; 代码&#xff1a; public int[] twoSum(int[] nums, int target) {int[] result new int[2];Map<Integer, Integer> map new HashMap<>();// for (int i 0; i < nums.length; i) { // 这么写不能防重复啊&#xff01;注意这里不…...

【运维笔记】VMWare 另一个程序已锁定文件的一部分,进程无法访问

情景再现 这里使用的是VMware 17 解决办法 进入设置 点击选项&#xff0c;全选复制里面内容 进入文件夹&#xff0c;删除所有包含.lck后缀的文件和文件夹 再启动虚拟机即可...

[Springboot]统一响应和异常处理配置

背景 前后端分离情况下&#xff0c;后端接口通常只需要返回JSON数据。 但有时候因为某些原因可能会导致得不到正确的结果。 比如 因为登录密码错误&#xff0c;你不能直接返回错误信息和null&#xff0c;这样前端很难处理。 又比如 因为后端接口爆出了异常&#xff0c;也不能直…...

Redis第四五六章 持久化事务主从复制

Redis ⽀持 RDB 和 AOF 两种持久化机制&#xff0c;持久化功能有效地避免因进程退出造成数据丢失问题&#xff0c; 当下次重启时利⽤之前持久化的⽂件即可实现数据恢复。 目录 第四章 持久化 4.1 RDB 4.1.1 触发机制 4.1.2 流程说明 4.1.3 RDB ⽂件的处理 4.1.4 RDB 的优…...

【强烈推荐】免费的PDF工具,包括PDF拆分/分割、转WORD等功能的免费在线软件工具,救了大命,找了半天什么pdf365、福xipdf、还有哔果pdf全是打着免费名义收费,烦死了

PDF拆分 - 图文工具箱 - imgtool.net&#xff0c;嘎嘎好用&#xff0c;主要是免费 除此之外&#xff0c;还有其他的功能&#xff0c;需要的可以去看看...

SpringMVC源码分析(二)启动过程之RequestMappingHandlerMapping分析

a、http请求中的url是如何与对应Handler的即Controller对应method映射的&#xff1f; 在上篇中提到在SpringMVC中&#xff0c;初始化9大内置组件的时候其中有一个组件就是HandlerMapping&#xff0c;在初始化HandlerMapping的时候会加载代码中所有标注了Controller和RequestMap…...

KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(7)

接前一篇文章:KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(6) 上一回讲到了drm_internal_framebuffer_create函数中的framebuffer_check函数。讲解了该函数的参数检查部分中的第二部分,本回对于该函数余下部分进行解析。 为了便于理解,再次贴出framebuffer_ch…...

2023 年 Arm A-Profile 架构发展

随着人工智能 (AI) 的兴起和安全威胁的加剧,计算需求不断发展,作为世界设备核心的基础计算架构也必须不断发展。这就是为什么我们的工程团队向普遍存在的 Arm 架构添加新功能和技术,然后软件团队确保软件尽可能无缝地适应这些未来的功能和技术。 Arm架构是如何开发的 Arm …...

2023年09月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 Python编程(1~6级)全部真题・点这里 第1题:红与黑 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 时间限…...

CentOS系统/root根目录扩容(扩展逻辑卷)

具体操作步骤 1、查看本机磁盘环境挂载情况 2、添加磁盘分区 3、开始扩容 4、同步到文件系统 1、查看本机磁盘环境挂载情况 [rooticon ~]# df -lh 可以看到/dev/mapper/centos-root 路径下容量为50G&#xff0c;我们要给这个路径下的容量扩容&#xff1a;[rooticon ~]# lsblk…...

苍穹外卖(三) 员工分页及技术实现细节

2. 员工分页查询 2.1 需求分析和设计 2.1.1 产品原型 2.1.2 接口设计 2.2 代码开发 2.2.1 设计DTO类 根据请求参数进行封装 2.2.2 封装PageResult 后面所有的分页查询&#xff0c;统一都封装为PageResult对象。 员工信息分页查询后端返回的对象类型为: Result 2.…...

二进制部署MySQL8.0

1、下载MySQL官方包 ## 下载MySQL [rootlocalhost ~]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz2、解压并移动安装包 # 解压安装包 [rootlocalhost ~]# tar xf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz# 移动 mv…...

全力以赴,火山引擎边缘云代表团出战亚运会

END 未来&#xff0c;火山引擎边缘云赛事阵容将继续全力以赴&#xff0c;通过领先、可信赖的云和智能技术&#xff0c;助力游戏行业呈现更加精彩的竞技赛事。...

出口欧美设备机箱:必须符合HASCO模架与DME顶针标准

在出口欧美市场的设备机箱领域&#xff0c;符合HASCO模架与DME顶针标准是至关重要的。这不仅关乎产品的质量和性能&#xff0c;还影响着企业在国际市场的竞争力。本文将深入探讨这一标准的重要性&#xff0c;并结合深圳市机汇五金制品有限公司&#xff08;以下简称“机汇五金”…...

避开蓝桥杯LED控制常见坑:STC15单片机P0口上拉、锁存器时序与宏定义的正确写法

避开蓝桥杯LED控制三大雷区&#xff1a;STC15单片机实战精要 第一次参加蓝桥杯嵌入式组的同学&#xff0c;往往会在LED控制这个看似简单的环节栽跟头。明明仿真软件里运行正常的代码&#xff0c;烧录到开发板上却出现LED亮度不足、闪烁异常甚至完全不亮的情况。这背后隐藏着STC…...

C51外部代码空间读取技术:CBYTE/CWORD宏详解

1. C51外部代码空间读取技术解析在8051单片机开发中&#xff0c;经常需要从外部程序存储器(Code Space)读取数据&#xff0c;这是嵌入式系统开发中的一项基础但关键的操作。许多开发者在使用Keil C51工具链时&#xff0c;会遇到如何正确读取外部程序存储器的问题。本文将深入解…...

2026 年 30 个 MCP Server 实测评:Claude Code 集成效果与响应延迟对比数据

1. 30个MCP Server实测评背后的真实问题:Claude Code不是“插上就快”,而是“配错就崩” 我上线第三个内部MCP Server时,CI流水线里一个原本2秒完成的代码补全请求,突然卡在waiting for MCP response状态长达17秒。日志里没有报错,只有反复重试的HTTP 504。排查了两天,最…...

3个步骤让你的Mac原生支持200+视频格式预览

3个步骤让你的Mac原生支持200视频格式预览 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://gitcode.com/gh_mirrors/ql/Qu…...

告别盲调!用Keil自带的逻辑分析仪(Debug Simulator)可视化STM32引脚波形

告别盲调&#xff01;用Keil自带的逻辑分析仪(Debug Simulator)可视化STM32引脚波形 在嵌入式开发中&#xff0c;调试环节往往占据整个开发周期的40%以上时间。对于STM32开发者而言&#xff0c;传统的调试方式主要依赖LED闪烁观察或串口打印输出&#xff0c;这种方式不仅效率低…...

自动化测试的未来:AI测试会取代人工测试吗

一、AI浪潮下的测试行业变局在软件测试行业的发展历程中&#xff0c;自动化测试的出现曾被视为提升效率的关键转折点&#xff0c;而如今&#xff0c;AI技术的深度介入&#xff0c;正在将这场变革推向新的高度。从AI自动生成测试用例&#xff0c;到智能预测高风险代码模块&#…...

从芯片到系统:手把手拆解汽车MCU里的安全硬件(SHE/HSE)与独立HSM如何协作

汽车MCU安全架构实战&#xff1a;SHE/HSE与独立HSM的协同设计指南 当一辆现代汽车启动时&#xff0c;从车门解锁到发动机控制&#xff0c;超过1亿行代码在数百个微控制器&#xff08;MCU&#xff09;上同时运行。这些代码中包含着价值连城的数字资产——车主的生物特征数据、自…...

一文读懂现代城市照明:从亮化到数字化的行业升级指南

当前照明行业早已脱离单纯"亮起来"的初级阶段&#xff0c;正在向场景化、数字化、低碳化方向快速迭代&#xff0c;很多客户在选择照明服务商时往往对行业标准、技术趋势了解不足&#xff0c;导致项目效果与预期存在差距。行业升级的核心方向&#xff1a;从单一照明到…...

基于CW32F030的BLDC电机控制:从国产MCU到完整评估方案

1. 项目概述&#xff1a;从一颗国产MCU到一套完整的BLDC评估方案最近在做一个直流无刷电机&#xff08;BLDC&#xff09;的小项目&#xff0c;选型时发现了一款挺有意思的国产MCU——武汉芯源的CW32F030C8T6&#xff0c;以及围绕它打造的一套完整的评估套件CW32_BLCD_EVA。对于…...