Jetson Orin NX 开发指南(5): 安装 OpenCV 4.6.0 并配置 CUDA 以支持 GPU 加速

news2024/11/18 14:27:58

一、前言

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/") 修改为相应的路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1082094.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式锁3:基于redis的插件redission实现分布式锁

一 redision简介 1.1 redission介绍 Redisson分布式锁是一种基于redis实现的分布式锁,它利用redis的setnx命令实现分布式锁的互斥访问。同时还支持锁的自动续期功能,可以避免因为某个进程崩溃或者网络故障导致锁无法释放的情况。 只要线程一加锁成功…

Java8实战-总结41

Java8实战-总结41 用Optional取代nullOptional 类入门应用 Optional 的几种模式创建 Optional 对象使用 map 从 Optional 对象中提取和转换值 用Optional取代null Optional 类入门 Java 8中引入了一个新的类java.util.Optional<T>。这是一个封装Optional值的类。举例来…

数据库基础(一)

数据库面试基础 注&#xff0c;本文章内容主要来自于JAVAGUIDE&#xff0c;只是结合网上资料和自己的知识缺陷进行一点补充&#xff0c;需要准备面试的请访问官方网址。 一、范式 参考链接 函数依赖&#xff1a;一张表中&#xff0c;确定X则必定能确定Y&#xff0c;则X->…

Factory-Method

Factory-Method 动机 在软件系统中&#xff0c;经常面临着创建对象的工作&#xff1b;由于需求的变化&#xff0c;需要创建的对象的具体类型经常变化。如何应对这种变化&#xff1f;如何绕过常规的对象创建方法(new)&#xff0c;提供一种“封装机制”来避免客户程序和这种“具…

【JQuery插件】手把手教你如何白瓢一个网站的全部付费资源!前端狂喜

视频讲解地址&#xff1a;https://www.bilibili.com/video/BV1bm4y157GF/ 网站地址&#xff1a;https://www.jq22.com/ 大家好&#xff0c;这一集给大家分享一个好用的JQuery插件网站&#xff0c;当然&#xff0c;更主要的是教大家如何白瓢这个网站上的资源&#xff0c;这个网…

Harmony ArkTS语言

ArkTS语言 前言正文一、声明式UI二、数据列表① 创建ArkTS文件② 添加资源③ 样式④ 组件⑤ 标题组件⑥ 列表头组件⑦ 列表Item组件⑧ 组件生命周期⑨ 渲染列表数据⑩ 单选 三、源码 随着华为宣布鸿蒙后续的版本不再兼容Android应用之后&#xff0c;对于现在的开发环境来说有一…

Databend join reorder 策略

join order 的重要性 Join order 是指在执行SQL查询时&#xff0c;决定多个表进行 join 的顺序。它是数据库查询优化的一个重要方面&#xff0c;对查询性能和效率有着重要的影响&#xff0c; 不同的 join order 对性能可能有数量级的影响。 优化器优化 join order 的核心流程…

springboot项目Html页面引入css文件不生效

我的出错原因&#xff1a; 在调用css文件时&#xff1a; <link rel"stylesheet" type"text/css" href"/static/css/style.css" /> 这里我多加了一个/static,而使得css样式不生效 因为在springboot项目中&#xff0c;静态资源是默认存…

【每日一题】151. 反转字符串中的单词

151. 反转字符串中的单词 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符…

MySQL中使用函数会使索引失效?

文章目录 1、前置准备2、ChatGPT的答案3、实践证明SQL1SQL2SQL3SQL4SQL5 4、总结 1、前置准备 首先创建我们要测试的库表 CREATE TABLE lianhe_index (id int(11) NOT NULL AUTO_INCREMENT COMMENT id,name varchar(255) DEFAULT NULL,age int(11) DEFAULT NULL,number int(1…

leetCode 115.不同的子序列 动态规划 + 滚动数组(优化)

给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数&#xff0c;结果需要对 10^9 7 取模 示例 1&#xff1a; 输入&#xff1a;s "rabbbit", t "rabbit" 输出&#xff1a;3 解释&#xff1a;如下所示, 有 3 种可以从 s 中得…

VS2017+QT+PCL环境配置

1、前置知识 C++ Qt VTK/OPenGL喧杂C 2、环境搭建 1、visual studio 2017安装,从官网上下载对应安装程序。选择C++安装即可 2、Qt安装若是没有账号和密码,选择dont have qt accout? Sign up 根据自己的项目需要选择安装那些组件 2、PCL安装 下载地址:https://github.co…

matlab绘制尖角colorbar

Matlab代码 cmap [69 117 180116 173 203171 217 233254 224 144253 174 77244 109 67215 48 39165 0 38]/255; %画图的部分代码 figure set(gcf,outerposition,get(0,screensize)) ax axes(Position,[0.2 0.2 0.6 0.6]); % pos需要自己设置位置 h colorbar; % colormap(ax…

黑客技术(网络安全)——自学思路

如果你想自学网络安全&#xff0c;首先你必须了解什么是网络安全&#xff01;&#xff0c;什么是黑客&#xff01;&#xff01; 1.无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性&#xff0c;例如 Web 安全技术&#xff0c;既有 Web 渗透2.也有 Web 防…

【docker】资源使用率验证及告警

说明 Docker资源使用率可以通过以下命令进行验证&#xff1a; 使用 docker stats 命令查看容器的实时资源使用情况&#xff0c;例如&#xff1a; docker stats <container_id> 该命令会展示容器的CPU、内存、网络IO、磁盘IO等各项资源的使用情况。2. 使用 docker sta…

在QGIS中给矢量数据属性编号的一种方法

目录 写在文章前 一、给要素编号用哪些功能 二、实现一个最简单的编号 1.数据准备 2.编辑字段计算器表达式 3.查看编号结果 三、更加复杂的编号 1.使用UUID编号 2.根据单个属性排序后编号 3.根据多个属性排序后编号 4.拼接字符串进行编号 5.根据时间编号及实现 写在…

快速学习微服务保护框架--Sentinel

学习一个框架最好的方式就是查看官方地址,sentinel是国内阿里巴巴公司的,官网更方便官网 官网 微服务保护框架 Sentinel 1.初识Sentinel 1.1.雪崩问题及解决方案 1.1.1.雪崩问题 微服务中&#xff0c;服务间调用关系错综复杂&#xff0c;一个微服务往往依赖于多个其它微…

VScode使用SSH去编辑远程文件

Visual Studio Code (VS Code) 是一款强大的文本编辑器&#xff0c;它支持使用 SSH 连接远程服务器进行开发。通过 SSH 连接远程服务器&#xff0c;您可以在本地编写程序&#xff0c;并将代码上传到远程服务器执行。 安装插件 需要安装这两个插件 安装完成之后&#xff0c;右…

ROS-PX4仿真笔记_1

offbord模式测试 rosrun offboard_pkg position stablelize模式 lqr控制器实验 roslaunch px4 fast_test.launch 无人机起飞1.5-2m sh mybot_gazebo.sh先点击mode&#xff0c;再点击cmd&#xff0c;才能打开offbord模式 minijerk实验 roslaunch px4 fast_test.launch sh …

KBU1510-ASEMI开关电源整流桥KBU1510

编辑&#xff1a;ll KBU1510-ASEMI开关电源整流桥KBU1510 型号&#xff1a;KBU1510 品牌&#xff1a;ASEMI 芯片个数&#xff1a;4 封装&#xff1a;KBU-4 恢复时间&#xff1a;&#xff1e;50ns 工作温度&#xff1a;-55C~150C 浪涌电流&#xff1a;200A 正向电流&am…