码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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 文件夹

    1. cd ~/Documents/opencv-4.6.0/
    2. mkdir build && cd build

    预编译 opencv 4.6.0 及其扩展模块 opencv_contrib-4.6.0,生成 Makefiles 文件

    1. cmake -D CMAKE_BUILD_TYPE=RELEASE \
    2. -D CMAKE_INSTALL_PREFIX=/usr/local/ \
    3. -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.6.0/modules \
    4. -D WITH_CUDA=ON \
    5. -D CUDA_ARCH_BIN=8.7 \
    6. -D CUDA_ARCH_PTX="" \
    7. -D ENABLE_FAST_MATH=ON \
    8. -D CUDA_FAST_MATH=ON \
    9. -D WITH_CUBLAS=ON \
    10. -D WITH_LIBV4L=ON \
    11. -D WITH_GSTREAMER=ON \
    12. -D WITH_GSTREAMER_0_10=OFF \
    13. -D WITH_QT=ON \
    14. -D WITH_OPENGL=ON \
    15. -D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" \
    16. -D WITH_TBB=ON \
    17. ..

    其中

    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 的工作空间

    1. mkdir -p ~/catkin_pkg/src/
    2. 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 的配置文件,终端输入

    1. cd ~/catkin_pkg/src/cv_bridge/
    2. gedit ./CMakeLists.txt

    添加自己安装的 带有 GPU 加速的 OpenCV 的 build 文件的路径

    include("~/Documents/opencv-4.6.0/build/OpenCVConfig.cmake")

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

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

    1. cd ~/catkin_pkg/
    2. catkin_make

    如下结果表明编译成功

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

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

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

  • 相关阅读:
    org.apache.commons.lang3.StringUtils工具类使用大全
    【C++ Primer Plus】第3章 处理数据
    Tauri 2.0.0 beta环境搭建
    从零开始利用树莓派+扬声器,实现简单的蓝牙音箱,手机连接放歌
    Android学习笔记 4. ImageView
    294_C++_报警状态bit与(&)上通道bit,然后检测置位的通道,得到对应置位通道的告警信息,适用于多通道告警,组成string字符串发送
    Java中Servlet的生命周期
    5-1传输层-传输层提供的服务
    麒麟v10服务器安装vnc
    第17篇 2D绘图(七)涂鸦板
  • 原文地址:https://blog.csdn.net/qq_44998513/article/details/133778446
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号