在Jetson Xavier NX上安装编译OpenCV完整流程+踩坑记录

目录

前言

完整流程

一. 准备工作

二. 安装+编译+生成

三. 添加环境变量

四. 失败了?试试这个

踩坑记录

一.Cmake信息栏缺失'python3'部分,我的解决方法如下:

二.make过程中报错导致make停止:

三.安装之后python不能import cv2/只有特定版本可以,解决方法:

小结


前言

本人在NX板上以及Windows系统上多次通过cmake安装过OpenCV,包括4.x和3.x的版本,踩坑无数,这方面的资料我看过很多,但是大多都比较老了,所以想分享一下自己的经验,希望能帮到大家。

注意!在进行操作之前要了解这个教程是否适合你,如果你的配置与我下面所述不同,可能会遇到各种问题。

  • 必需:系统是Ubuntu 20.04,安装了CUDA和cudnn;
  • 建议:要安装的OpenCV版本≥4.5(本文是4.8.1),4.5以下适当降低cmake版本,5.0及以上建议使用更高版本cmake;
  • 其它:Jetpack(内含OpenCV,安装教程贴在文章结尾了),本文版本是5.1.2,版本和我不同也可能会出问题。

网上类似的教程有很多,末尾贴了本文参考的或者比较有用的文章,读者可以根据需要浏览。

完整流程

一. 准备工作

        1. 更新你的pip,这同时也会让你的gcc编译器升到高版本:

sudo apt-get update
#下载pip
sudo apt-get install pip
#或更新你的pip
pip install --upgrade pip

        确认gcc版本,我的是9.4.0,版本在8.x或9.x应该都没问题。

gcc --version

         2. 安装Cmake,我的版本是3.26.5,和我用一个版本是最稳的。(编译高版本CV就用高版本cmake,反之就降cmake版本)可以在Cmake官网上进行下载安装,或者用这个压缩包链接:cmake-3.26.5-linux-aarch64.tar.gz (github.com)

        具体操作可以参考这篇文章

        3. 卸载Jetpack自带的OpenCV(如果没有就跳过此步),这个CV是不支持CUDA的:

sudo apt-get purge libopencv*

        如果你有其它版本OpenCV,也可以直接删除opencv文件夹。多版本共存是可行的,参考Ubuntu下多版本OpenCV共存和切换_ubuntu 多个opencv版本-CSDN博客,但在我的系统上出现了jtop报错的问题。

二. 安装+编译+生成

        1. 首先在GitHub下载OpenCV以及OpenCV_contrib的源码,注意二者版本要对应。        

        OpenCV:Releases · opencv/opencv (github.com)

        OpenCV_contrib:Tags · opencv/opencv_contrib (github.com)

        opencv-4.8.1解压缩到主文件夹下即可,contrib文件夹解压到opencv-4.8.1文件夹中。 

        2.  打开终端操作:

#小技巧:按Tab可以自动补全文件名
jetson@ubuntu:~$ cd opencv-4.8.1/
#新建build文件夹
jetson@ubuntu:~/opencv-4.8.1$ mkdir build
#安装依赖项,可根据自己需要进行增删
jetson@ubuntu:~/opencv-4.8.1$ sudo apt-get install libgtk2.0-dev pkg-config libpng-dev  libjpeg-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev gstreamer1.0-plugins-base python3-dev python3-numpy python3-py
#打开cmake的GUI界面
jetson@ubuntu:~/opencv-4.8.1$ cmake-gui

        3. 在Cmake中操作:

        如图:

e3300505b405402b98155c8faeb1fc69.png

        然后点击左下方‘Configure’,默认生成器为Unix Makefiles不用改,点'Finish',等待配置完毕。(注意,网络必需稳定连接,有‘技术’是最好的,GitHub的链接超时可以尝试连手机热点。)这一次在信息栏应该没有红色报错,完成后的信息栏如图(这是我最后configure完的结果,第一次configure可能没有这么多内容,但是python3路径必须要有):

f44238542f574ca3a041b87468ce11fc.png376080326b114ad7bd72cae9f446d9b8.png

        注意!检查信息栏是否提供了python3的注入路径。如图是没有的情况:

8e3290bdc4f246359fd87bcb4e5bf44b.jpeg

         如果出现这个问题(很可能是cmake的bug),那么后续不会将.so文件注入到你的python包路径中,解决方法看下面踩坑记录。      

        接下来开始配置编译选项。分享一下我自己的,如下图。绿色框是必选,黄色框是根据自己需要进行选择。没有框的是默认的或者我不了解的。可以悬停在选项上看解释说明,也可以在opencv官网查看说明文档:结合这章配置选项参考和这章老版的开发板生成教程。要注意以下几点:

  • 在勾选好之后,再次点击configure才能看到更多可配置选项;
  • 注意修改CUDA_ARCH_BIN(GPU算力),Xavier NX为7.2;
  • 如果你有多个版本的python3,可以在INCLUDE_DIR处写入它们的路径;
  • OPENCV_PYTHON3_VERSION这个选项不知道是干嘛的;
  • ENABLE_FAST_MATH提示的是不推荐,可能是容易报错吧。

4a65d0d549204d719ed49a4fe4681d99.jpegeb8b8b418bbf449d9101e3c5a1b6f6ac.jpeg382b5d2ec36044b2a3839c5161907dcf.jpeg2ed5f36a9dc14972bf3b12f5d63a19c1.jpeg

afff1b31a0d0438fa907ab00c4db8200.jpeg2ed42dcbee44425dafc05c7e0a64c577.jpeg

        点击Configure后,如果消息栏有红色警告或报错,一定要解决好,比如关于WebP的报错,可以把WITH_WebP关掉(可能是依赖项没装?反正这个格式也没什么用)。有下载失败的包,可以取消勾选相关选项(如果你不用的话,比如wechat_qrcode),或者用别的方法下载到.cache文件夹中。

        直到没有红色信息了,点击Generate。提示"Generating done"后,进行下一步。

        4. 在build文件夹下打开终端操作:

#-j6指的是cpu核心数,NX板应该把POWER MODE改成6CORE
jetson@ubuntu:~/opencv-4.8.1/build$ sudo make -j6

         进入漫长的生成过程。中途出现报错会导致生成终止。如果你的opencv,cmake和gcc版本没问题,那么多半是上一步configuration的问题,根据文件提示进行排查,取消勾选可能造成问题的选项(Configure的消息栏中一定不能有warning)。此外,还需要sudo make clean来清除之前生成的文件(如果想碰运气也可以不clean,且单个文件的报错一般不需要clean)。

        生成到100%后即为完成。依然在build文件夹下的终端操作:

#打包安装opencv
sudo make install

        如果你幸运地到达了这一步,那么opencv的文件已经打包安装好,工作也基本完成了。

三. 添加环境变量

        在终端操作:

sudo gedit /etc/ld.so.conf.d/opencv.conf

        文件内写入lib的路径,Configure时没改的话就是这个:

/usr/local/lib

        保存后在终端更新一下:

sudo ldconfig

        添加pkg-config路径:

sudo gedit /etc/bash.bashrc
#在文本末尾添加这两句后保存
#   PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
#   export PKG_CONFIG_PATH 
#终端下更新配置,然后可能要重启一下终端
source /etc/bash.bashrc

sudo updatedb

        注:如果出现报错:

sudo: updatedb: command not found

        解决方法是安装mlocate:

sudo apt-get install mlocate

         至此安装完成,可以使用jtop或者"pkg-config --modversion opencv4"命令来查看opencv版本。

四. 失败了?试试这个

        考虑到大家可能被生成失败搞得心态崩掉,我在这里贴上一个更稳定的方法,大家可以尝试一下。注意:版本对应、网络流畅的前提仍是必须的。尝试之前建议你删除整个opencv文件夹,重新解压一个新的,并且执行一次sudo make clean。

        在(三.-3.)这步,不使用cmake的gui界面,直接在(build文件夹下的)终端执行以下命令进行编译:

#在build文件夹下执行
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/ -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D BUILD_opencv_legacy=ON -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF -D CUDA_ARCH_BIN='7.2' -D WITH_CUDA=1 -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D OPENCV_GENERATE_PKGCONFIG=1 -D WITH_GTK_2_X=ON ..

        这样configure出来的opencv只设置了一些必需的功能,没有对其它选项作改动。

        完成后继续执行(三.-4.)的操作即可。

踩坑记录

    本人踩过的坑不计其数,但大多都在解决后没什么印象了。这些都是最近遇到的问题,或者曾经遇到的印象很深的问题。

一.Cmake信息栏缺失'python3'部分,我的解决方法如下:

  1. cmake-gui中,点击左上角Flie-->Delete Cache清除缓存;
  2. 选择好source和build的路径之后,先点击'Add Entry',手动加入python3配置,如图:7116919fdf414c53b2ce259e640a0cf8.png41d38d4e5f224c9eae6d2b0bfa4261f5.png
  3. 手动生成这两项后,再点击configure,信息栏python3的描述应该就出来了。

二.make过程中报错导致make停止:

        大多数问题都是以下原因导致的,在上网搜索解决方案之前,可以先检查是否有以下情况:

  • 在cmake进行configure的过程中,信息栏的红字warning没有解决;
  • cmake和gcc版本太高或太低都会导致编译错误,尤其是cmake应该调整到合适的版本;
  • 之前make失败后重新开始,没有进行sudo make clean。

三.安装之后python不能import cv2/只有特定版本可以,解决方法:

  1. 首先你要确定在configure时你正确地添加了PYTHON3_INCLUDE_DIR,也就是在cmake的信息栏中是有python3描述的;
  2. 进入'opencv-../build/lib/python3/'文件夹,会找到'cv2.cpython-3xx-aarch64-linux-gnu.so'文件,这个文件是对应一个python版本的,如果没有你需要的版本,说明configure的时候你没有添加它。把.so文件复制到你python的lib文件夹中,以系统自带的python3.8为例:
    #在.so文件所在文件夹中执行
    sudo cp cv2.cpython-38-aarch64-linux-gnu.so /usr/local/lib/python3.8/
    #进入目标文件夹
    cd /usr/local/lib/python3.8/
    #将.so文件重命名为cv2.so
    sudo mv cv2.cpython-38-aarch64-linux-gnu.so cv2.so
  3. 打开python(不要在lib文件夹下),输入import cv2,成功:
    >>> import cv2
    >>> cv2.__version__
    '4.8.1'

小结

后续遇到更多问题我会补充和更新。

以下是对我有帮助的参考文章:

安装Jetpack的教程:

【精选】在VMware虚拟机中基于Ubuntu18.04.5安装Jetpack4.5对Xavier进行刷机-CSDN博客

Jetson Xavier NX重装Jetpack5.0.2系统、安装CUDA11.4、Cudnn8.4.1、Tensorrt8.4._jetson nx安装pip3-CSDN博客

配置NX/编译OpenCV的教程:

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_jetson如何开机-CSDN博客 【精选】Jetson AGX Xavier编译CUDA版本的OpenCV4.5.0-CSDN博客

 

 

 

### 回答1: 好的,以下是在Jetson Xavier NX安装OpenCV的步骤: 1. 在Jetson Xavier NX安装OpenCV的依赖项。运行以下命令: ``` sudo apt-get update sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev ``` 2. 下载OpenCV源代码。您可以从OpenCV官方网站(https://opencv.org/releases/)下载最新的源代码。或者,您也可以使用以下命令下载3.4.0版本: ``` wget https://github.com/opencv/opencv/archive/3.4.0.zip unzip 3.4.0.zip ``` 3. 创建一个构建目录并进入该目录: ``` mkdir build cd build ``` 4. 运行cmake命令来配置OpenCV的构建。以下是一个示例命令: ``` cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=ON -D CUDA_ARCH_BIN="6.2" -D CUDA_ARCH_PTX="" -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D BUILD_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.0/modules -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF .. ``` 请注意,上述命令包括许多选项,这些选项是根据您的需求而定的。例如,您可以通过将`-D WITH_CUDA=OFF`选项更改为`ON`以启用CUDA支持。更改CUDA_ARCH_BIN选项以匹配您的GPU的计算能力。 5. 运行`make`命令来编译OpenCV。这将花费一些时间。 ``` make -j4 ``` 请注意,`-j4`选项用于使用4个CPU核心进行编译。如果您有更多或更少的核心,请相应地更改此选项。 6. 运行以下命令以安装OpenCV: ``` sudo make install sudo ldconfig ``` 7. 验证OpenCV是否已正确安装。在终端中运行以下命令: ``` python3 import cv2 print(cv2.__version__) ``` 输出应显示OpenCV的版本号。如果出现错误,请确保您按照上述步骤正确安装OpenCV。 希望这可以帮助您在Jetson Xavier NX安装OpenCV! ### 回答2: Jetson Xavier NX是一款基于ARM的开发板,一般用于人工智能、机器学习等领域,非常适合开发人员进行实验和开发。而 OpenCV 则是一种开源的计算机视觉软件库,可以用于图像处理、机器视觉以及模式识别等应用。 为了在 Jetson Xavier NX安装 OpenCV,我们需要完成以下几个步骤: 1. 环境准备 首先,我们需要准备好开发板的硬件环境,包括 Jetson Xavier NX 开发板、适配器、SD 卡、电源线和鼠标键盘等配件。 2. 安装 OpenCV 在准备好环境后,我们需要下载 OpenCV安装包并解压。进入解压后的目录(例如opencv-4.5.3),我们可以使用以下命令进行编译安装。 $ mkdir build $ cd build $ cmake .. $ make -j4 $ sudo make install 这些命令将创建一个名为“build”的目录,并在其中编译安装OpenCV。最后一条命令需要使用sudo权限,以确保OpenCV安装在正确的系统目录中(默认为/usr/local)。 3. 配置环境变量 完成 OpenCV安装后,我们需要配置系统环境变量,以便于我们在使用 OpenCV 时可以正常引用库文件。 $ echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH'>>~/.bashrc $ source ~/.bashrc 以上命令将会在用户目录下的.bashrc文件中添加一条 export 命令,用于设置环境变量。同时,也可以使用source命令立即生效。 4. 测试 OpenCV 最后,我们可以编写一个简单的 Python 脚本来测试 OpenCV 是否已经成功安装。例如: $ vim test.py import cv2 print(cv2.__version__) 执行该脚本,如果输出版本信息,则说明 OpenCV 安装成功,我们便可以开始使用 OpenCV 进行图像处理和计算机视觉开发了。 总之,通过以上步骤,我们可以在 Jetson Xavier NX 上顺利地安装和使用 OpenCV,方便我们进行图像处理和机器视觉等应用领域的开发。 ### 回答3: Jetson Xavier NX是一款非常强大的嵌入式系统,可通过安装OpenCV来扩展其功能。本文将向您介绍如何在Jetson Xavier NX安装OpenCV。 首先,您需要开启Jetson Xavier NX的终端窗口并确保您具有root用户权限,因为安装OpenCV需要使用root权限。在命令行中,输入以下命令以更新系统软件源: ``` sudo apt-get update sudo apt-get upgrade ``` 接下来,您需要安装一些必要的库文件和工具来支持OpenCV编译安装。请键入以下命令安装这些库文件: ``` sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libjpeg-dev libpng-dev libtiff-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran python3-dev python3-numpy ``` 一旦这些库文件和工具安装好后,您可以开始下载OpenCV源代码。可以通过以下命令从官方网站下载OpenCV源代码: ``` cd ~/ git clone https://github.com/opencv/opencv.git cd opencv git checkout 3.4 ``` 在源代码下载完成后,您需要创建一个新的目录并在其中进行编译安装。可以通过以下命令来执行这一步骤: ``` cd ~/ mkdir opencv_build cd opencv_build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. make -j$(nproc) sudo make install sudo ldconfig ``` 最后,您需要将OpenCV配置为与Jetson Xavier NX的硬件兼容。为此,您可以通过以下命令编辑配置文件: ``` cd /usr/local/lib/python3.6/dist-packages/cv2/python-3.6 sudo nano cv2.cpython-36m-aarch64-linux-gnu.so.conf ``` 在打开的文件中,添加以下两行代码: ``` /usr/local/lib /usr/lib/aarch64-linux-gnu/tegra ``` 一旦您完成了这些步骤,Jetson Xavier NX上的OpenCV就已经安装好了。为了确保OpenCV已经成功安装,可以在终端窗口中输入以下命令: ``` python3 import cv2 cv2.__version__ ``` 如果您看到OpenCV版本号,那么恭喜您,您已经成功地安装OpenCV
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值