Nvidia Jetson TX2 配置Cuda 加速的Opencv

这篇具有很好参考价值的文章主要介绍了Nvidia Jetson TX2 配置Cuda 加速的Opencv。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

“其他流程网上都有但是要找到适合自己的且没有报错的有点艰难”


首先做好心理准备,用Cmake进行编译的话,每次流程基本上都是2h左右,所以我选择用网线VNC直连后,挂后台处理。

准备:

1.安装Jetson的jtop监控器

2.准备Cmake-gui可视化安装程序(因为之前用代码的话路径容易写错,尽量避免这种情况发生,你也不想再多编译2h吧)

3.确保/usr/lib/中没有其他版本的openCV影响

find / -name "*opencv*" 2>/dev/null

4.推荐ubuntu18.04 + jetpack4.6+CUDA10.2+OpenCV+4.1.1(开始刷机的时候用的4.1.1然后paddlepaddle的4.7覆盖掉了,然后用4.5.3试了一下发现编译的时候.cpp红线报错太多,所以应该是版本不兼容,然后又换回4.1.1) 

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

 可以看到版本号:

* OpenCV:	4.1.1	compiled CUDA:	NO

5.如果有自带的openCV版本的是默认没有CUDA加速的,下面给出删除方法:

sudo apt purge libopencv*
sudo apt autoremove
sudo apt update

编译安装OpenCV

安装依赖库:

sudo apt install -y build-essential checkinstall cmake pkg-config yasm git gfortran
sudo apt update
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libjpeg8-dev libjasper-dev libpng12-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libv4l-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libtbb-dev libatlas-base-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev libopencore-amrnb-dev libopencore-amrwb-dev x264 v4l-utils
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

这里给出一点建议,对于这三个包libtiff-dev libjasper-dev libdc1394-22-dev,如果直接用复制粘贴的时候,连不上ubuntu的服务器,所以建议分步sudo apt-get。

也可以尝试换源的方法,看个人习惯。

OpenCV4.1.1 和 opencv_contrib 4.1.1 源码

前往 OpenCV 和 opencv_contrib 的 github 仓库下载 Latest release 源码

编译和安装 OpenCV

  • 将 opencv-4.1.1.zip 和 opencv_contrib-4.1.1.zip 放在同一文件夹并解压,将解压后的opencv_contrib-4.1.1放在opencv-4.1.1文件中
  • 其实也不用刻意去关注路径,这就是cmake-gui的好处
  • 执行命令
    cd opencv-4.1.1
    mkdir build
    cd build
    sudo cmake-gui

注意:如果用的是4GB的nano的话,在进行编译之前要swap空间。比TX2内存大的都不用考虑。

  • 使用代码:
  • cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DOPENCV_ENABLE_NONFREE=1 \
    -DBUILD_opencv_python2=1 \
    -DBUILD_opencv_python3=1 \
    -DWITH_FFMPEG=1 \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
    -DCUDA_ARCH_BIN=6.2 \
    -DCUDA_ARCH_PTX=6.2 \
    -DWITH_CUDA=1 \
    -DENABLE_FAST_MATH=1 \
    -DCUDA_FAST_MATH=1 \
    -DWITH_CUBLAS=1 \
    -DOPENCV_GENERATE_PKGCONFIG=1 \
    -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.1.1/modules \
    ..

        注意:使用代码的时候,必须要满足文件关系树。

  • 使用gui:勾选后点击Configure..Generate.. 

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

检查gui窗口中的路径和 OPENCV_EXTRA_MODULES_PATH以及是否勾选管道GENERATE:

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

 很多博客都有相似的报错(我总结一下):

1.缺少"boostdesc_bgm.i":报错形式为opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:653:20: fatal error: boostdesc_bgm.i: 没有那个文件或目录#include "boostdesc_bgm.i" ;因此需要下载并解压这个文件并添加到src文件中,

 文件应包含下面所有文件:tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

有的还会出现缺少cuviddec.h文件的问题,可以参考这篇博客:Ubuntu18.04安装Autoware1.14-GPU版(慎用!)_autoware_awsim显卡资源_wweweiweiweiwei的博客-CSDN博客

去网上下载文件:

  •     boostdesc_bgm.i
  •     boostdesc_bgm_bi.i
  •     boostdesc_bgm_hd.i
  •     boostdesc_lbgm.i
  •     boostdesc_binboost_064.i
  •     boostdesc_binboost_128.i
  •     boostdesc_binboost_256.i
  •     vgg_generated_120.i
  •     vgg_generated_64.i
  •     vgg_generated_80.i
  •     vgg_generated_48.i

这里贴上几个网盘链接:

(1)链接:百度网盘 请输入提取码
提取码:p50x

(2)链接:百度网盘 请输入提取码
提出码:e1wc

总结一下编译之中的错误解决方法:

1.如果是出现红色划线:大概率是文件缺失和头文件失效,以及.hpp文件在cmake-gui未勾选导致其他文件调用失败,比如说:有一个opencv_python_test的文件,如果你勾选了,但是你缺少依赖库和文件也会出现报停

2.最常见的报错就是:

CMakeFiles/Makefile2:1289: recipe for target xxx' failed
make[1]: *** [xxx] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2

 很有可能是你勾选了此opencv版本不兼容的模块,面向报错检查自己是否勾错。

3.OpenCV版本重叠,例子:如果你没删干净OpenCV,你编译了低版本的Opencv是不会覆盖的,

就算你编译成功了,make install安装的时候也会报错。

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

Make:

(事先调整 CPU 性能模式打开尽量多的核心)

sudo make -j4(四核编译)
sudo make -j6(六核编译)

编译完成后最后一步:

sudo make install

检查:

python3:

python3
import cv2
cv2.__version__

jtop:

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

 如果还有其他问题:可以参考以下博客:

(73条消息) 解决CMake Error: The source directory “../CMAKE_BULID_TYPE=RELEASE“ does not exist._Dr.Guo的博客-CSDN博客https://blog.csdn.net/Guo___Liang/article/details/122268047(73条消息) Jetson OpenCV 安装,支持cuda加速,已解决多个常见问题_jetson安装opencv_Not L的博客-CSDN博客https://blog.csdn.net/weixin_45306341/article/details/127926178

(73条消息) ubuntu 18.04 交叉编译opecv 树莓派4 问题总结_搬砖大学生的博客-CSDN博客https://blog.csdn.net/liyangbinbin/article/details/108214116

linux安装opencv时make出错-CSDN社区https://bbs.csdn.net/topics/392374809


 2023年11月:(续)重刷系统后重新配置

玩嵌入式多的就是时间,用浪费时间来彰显奢侈!

因为作者之前的系统因为内核更新版本不兼容导致崩溃,然后对原来的系统没有备份。所以打算重新刷包,仍然还是以Jetpack4.6版本为主,这次的CUDA_opencv4.1.1不兼容4.6.4,为了解决使用方面的问题,我们还是将Nvidia官方的opencv4.1.1清除,更新opencv版本为4.8.0(采取这个版本的原因:因为我之前关注的一个外国博主jetsonhack不久才出了最新的配置视频,我为了节约时间按照他的配置来,这样就不用一个个的去添加编译库和依赖了)。博主参考视频链接为Youtube

 先从他的github clone到整体配置文件,这里我已经将他备份压缩为TX2_buildCV.tar

解压缩后nano_build_opencv里面有bash自启动文件:build_opencv.sh(此文件包含了对opencv和opencv-contrib 版本的git,和自动编译配置make,我们在make中需要修改内容

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

请记住,make实用程序保留了一个时间戳列表,以帮助确定是否需要重新构建某些内容。默认情况下,cp用当前时间戳标记复制的文件。这意味着如果没有保留时间戳,make将重新构建所有内容。

这个配置适用于所有型号的NVIDIA Jetsons。视频中的Jetson是NVIDIA Jetson Nano开发工具包。

对于Jetson Nano,您需要修改build_open_cv脚本。

待修改的内容有:

Jetson TX2不知道8.7 (Jetson Orin)架构

-D CUDA_ARCH_BIN = 5.3, 6.2, 7.2, 8.7

更改为

-D CUDA_ARCH_BIN = 5.3, 6.2, 7.2

并更改CUDA版本以匹配您的机器。在Jetson TX2上,这是8.2。

- d CUDNN_VERSION = ' 8.0 '

更改:

- d CUDNN_VERSION = ' 8.2 '

修改好了过后保存执行命令 

./build_opencv.sh 4.8.0

如果有大佬对bash非常熟悉自己也可以优化以下代码,节省更多的时间。

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

检查Generate和Configuration 

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

我这边发现无法find python3的编译器和lib以及下载的位置,按照我的猜测这个地方是因为,anaconda造成的bin文件链接问题,我暂时还在寻找解决办法。如果没有用anaconda配置过python的环境的话这个地方应该和2.7一样是能查找到默认python的。

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

之前是链接在anaconda上的可能当时修改的时候弄错了:

unlink /usr/bin/python3 #删除这个软连接

ln -s /usr/bin/python3.6(可执行文件)/usr/bin/python3

 tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

但是这样修改之后仍然无法识别到lib和install path,OK,没有的话就只有自己写了

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

PYTHON3_EXECUTABLE:

PYTHON3_LIBRARY:

PYTHON3_NUMPY_INCLUDE_DIRS:

PYTHON3_INCLUDE_DIR:
PYTHON3_PACKAGES_PATH:

这些路径都必须按照自己的版本和系统自己定义。

我觉得出现这种情况应该是,之前的conda路径对软链接进行了引导,导致系统指向没法给出明确的位置,影响了cmake的默认状态。导致python-dev也没法正常识别。所以可能大家也会使用虚拟环境进行python的调用,这里贴出我的案例。

然后就是漫长的编译链接下载(2h)左右。直到你看到

Doing so may make running tests on the build later impossible 选择N

之后根据bash文件我们编译好的文件存在了tmp下,将这些文件迁移到HOME下保存就行了。接下来import numpy和cv2出现了问题:

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

我们可以看到opencv.conf文件是设置正确了的,也就是说咱们的pkg-config也是没有问题的,接着我用C++跑了以下opencv的案例是没有问题的。

但是为什么import cv2和import numpy会出现segment error喃, 一般报这种问题是涉及到系统指针,内存错误啥的,因为汲取之前的经验和教训,我推测大概是编译python cv2的时候链接文件出现了问题(但因为我没专研过编译和链接)所以我只能看看import cv2到底是怎么链接的:

查看链接的文件LD_DEBUG=files 

程序执行需要的文件和链接库

查看链接libs LD_DEBUG=libs

程序执行需要链接库

LD_DEGUG=files python -c "import cv2"

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

看到这直接心肺骤停了,原来的opencv-4.1.1的链接没有删干净自动进行了链接 

现在的我也不知道怎么重新分配,干脆直接把这个build的文件夹直接清除了。重新查询链接后发现没有报错了。但重新import cv2显示找不到libopencv_img_hash.so.4.1这个文件,这个文件分明就是原来4.1.1版本的,我一脸茫然。啥都不会就直接重新编译..........

重新编译之后:但是不管怎么设置libraryPATH都一直出现这个错误,且永远4.1.1都会占用我4.8.0的链接,根据上面图我们发现,一直有个文件cv2.cpython-36m-aarch64-linux-gnu.so链接文件申请软连接这个img_hash,因为cv2.cpython-36m-aarch64-linux-gnu.so就是这个文件是针对在 Linux 上运行的 64 位 ARM 架构系统的 CPython 3.6 版本的 OpenCV 模块的共享库文件。它包含了针对特定硬件和操作系统的编译代码,可以与 Python 代码一起使用,因为我对这个共享库的配置不是很了解所以一直没在意它如果要正常工作,需要申请软链接。如果删除了其他的共享库,python在import的时候,很明显会报找不到share文件的错误,进而新编译的cv2.so也申请不到4.8.0的共享库。

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

 unlink之后:豁然开朗!

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

再继续重新编译试试,然后最后找到编译生成的.so文件将它放在我们的dist-packages目录下。

然后一定要确定好numpy的版本和路径位置,如果没有识别出来版本很有可能是不兼容的。

我重新修改了一下兼容的numpy的core目录:

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

 tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

继续跑! 

最后将cv2.cpython-36m-aarch64-linux-gnu.so改为cv2.so 并连接到python3.6文件夹下。

然后卸载掉~/.local文件夹中numpy不兼容的版本重新安装numpy==1.19.3。

漫长的两天填坑结束!!!!!

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu

参考链接: 

python2下import cv2正常,但python3找不到 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/581072793?utm_id=0&wd=&eqid=c04f40d90006d1b20000000664910ed7

LD_DEBUG的使用-CSDN博客

Ubuntu完全卸载opencv - 知乎

JetSon NANO 编译pyrealsense2运行D455 - 代码先锋网 (codeleading.com)

Jetson Xavier NX使用Yolov5+DeepStream+TensorRT实现CSI摄像头的目标识别及采坑记录 (taodudu.cc)

附加:

刷机配置可以参照这个链接GitHub - afeng616/Build-Cozy-Ubuntu-Environment: 搭建舒适的Ubuntu环境,逐步成为Ubuntu22.04重度使用者!同时包括18.04和22.04版本配置搭建舒适的Ubuntu环境,逐步成为Ubuntu22.04重度使用者!同时包括18.04和22.04版本配置 - GitHub - afeng616/Build-Cozy-Ubuntu-Environment: 搭建舒适的Ubuntu环境,逐步成为Ubuntu22.04重度使用者!同时包括18.04和22.04版本配置https://github.com/afeng616/Build-Cozy-Ubuntu-Environment

之前有个友友问为什么没法使用CUDAdnn,我现在回来看了以下之前的配置,如果Jetpack的版本过低,好像用opencv4.1.1的话是没有CUDA_dnn的编译选项的,所以不知道能否自己用命令来实现DNN编译,这次我这个版本是4.6.4,然后opencv是4.8.0的情况下在 Generate之前加上dnn编译是可以的。

tx2安装cuda,Jetson ,opencv,人工智能,计算机视觉,ubuntu文章来源地址https://www.toymoban.com/news/detail-602072.html

到了这里,关于Nvidia Jetson TX2 配置Cuda 加速的Opencv的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jetson TX2 GPIO权限设置,Jetson.GPIO提供的99-gpio.rules文件没有效果

    在此之前得确认1. 用户组gpio是否存在 getent group | grep gpio (如果没创建就 groupadd -r gpio 创建)2. 当前用户是否已经加入gpio用户组 groups | grep gpio (如果没加入就 usermod -aG gpio 当前用户名 加入) 不过一般Jetson 把以下内容写到 /etc/udev/rules.d/99-gpio.rules 中去 然后运行   打算使用Jet

    2024年02月08日
    浏览(44)
  • 亲测可用-jetson nano b01上配置cuda加速的opencv

    前面的文章已经写过如何安装镜像及基础配置 亲测可用-jetson nano B01镜像安装及配置 jetson nano的官方镜像中自带opencv,但是不支持显卡加速 输入命令 按下数字7查看INFO界面,可以看到 所以默认自带的是不支持cuda加速(GPU)的,没有办法充分发挥jetson上GPU的性能 卸载自带的op

    2024年02月03日
    浏览(44)
  • 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.

    2024年02月04日
    浏览(54)
  • Jetson OpenCV 安装,支持cuda加速,已解决多个常见问题

    1 :本文主要介绍 Jetson Xavier NX (以下简称 NX ) 平台下 OpenCV 的卸载及编译安装带 CUDA 加速的OpenCV 2 :并提出解决依赖项无法安装的问题 为什么要卸载默认的 OpenCV ? 输入命令 按数字6查看INFO页面,可以看到 所以默认的 OpenCV 版本是不带 CUDA 加速的,无法充分利用 NX 的 GPU 性能

    2024年01月19日
    浏览(54)
  • PX4与TX2通信

    PX4与TX2通信以及相关数据的获取 目录  1. PX4硬件接口 2. TELEM1、2接口线序 3.  PX4与TX2通信  PX4 IO口定义:   PX4硬件: 4. 通信测试 5. RTPS+ROS Jetson TX2终端:  pixhawk: 6. 提高IMU数据发布频率  方法一:通过mavros包话题订阅频率  方法二:更改PX4启动文件 7. GPS数据获取     PX4是

    2024年02月14日
    浏览(31)
  • tx2开发板升级JetPack至最新

    最近一个项目用到了tx2, 上面的jetpack太老了需要更新,很久没和开发板打交道了,记录一下。中间没怎么截图,所以可能文字居多。 Ubuntu 18.04的机器,避免有坑,不要使用虚拟机,一定要是物理机,我就是刚开始用虚拟机,每次到99%,就卡住 TX2开发板 网线,tx2 USB连接线 S

    2024年01月20日
    浏览(37)
  • Nvidia Jetson Orin 开发板配置开发环境

    参考文档:(官方)https://developer.nvidia.com/embedded/learn/get-started-jetson-agx-orin-devkit Check your L4T version first to see if you have a unit flashed with older version of the BSP. You may get something like this, # R34 (release), REVISION: 1.0, GCID: 30102743, BOARD: t186ref, EABI: aarch64, DATE: Wed Apr 6 19:11:41 UTC 2022, and this show

    2024年02月07日
    浏览(47)
  • 【EHub_tx1_tx2_A200】Ubuntu18.04 + ROS_ Melodic + 锐驰LakiBeam 1L单线激光 雷达评测

            大家好,我是虎哥,最近这段时间,又手欠入手了锐驰LakiBeam 1L激光雷达,实在是性价比太优秀,话说,最近激光雷达圈确实有点卷。锐驰官网的资料已经很丰富,我这里总结一下自己的简单测试经验,分享给大家。          LakiBeam1L是锐驰智光面向中低速场

    2024年02月03日
    浏览(39)
  • Nvidia Jetson Nano Developer KIT配置全过程(一):jetson镜像系统烧录

    关于Jetson Nano开发板的规格参数等指标信息,可以登录Nvidia官方网站查看,也可以打开下面的连接查看。 重点提醒:JetsonNano处理器架构是aarch64架构,所以在jetson nano上安装软件时请选择arrch64版本的,否则会导致无法预料的严重后果。 arm64和aarch64之间的区别:arm64已经与aarc

    2024年02月10日
    浏览(44)
  • 【jetson nano】jetson nano环境配置+yolov5部署+tensorRT加速模型

    断断续续地前后花了一个多星期配置环境以及部署模型,期间也报了无数错误,参考了很多文档,求助了身边的朋友,因此尽可能详细的记录一下这个过程。 此处感谢Xnhyacinth在配置过程中对我的帮助哈哈哈꒰ঌ( ⌯’ \\\'⌯)໒꒱ 我主机上的环境是python3.9,cuda11.6 jetson nano环境

    2023年04月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包