Jetson Nano 从头配置OpenCV+CUDA+QT完整流程

Jetson Nano 从头配置OpenCV+CUDA+QT完整流程

  • Jetson Nano系统配置
    • 烧录系统
    • 系统准备
  • 安装OpenCV with CUDA
  • 安装Qt
  • 编译设置

想在Jetson Nano上做视觉开发,但是环境配置总是最恼人的,经历多次繁杂的配置过程后,决定把本人配置环境的流程和问题记录下来,但一千个人就有一千个jetson,每个人遇到的问题都不尽相同,希望能给诸位带来一些帮助。

Jetson Nano系统配置

烧录系统

烧录系统在Nvidia官网有详细的教程。官方建议使用16G以上的SD卡。本文烧录的主机是Windows系统。

  1. 使用SD Card Formatter软件将需要安装系统的SD卡格式化;
    Jetson Nano 从头配置OpenCV+CUDA+QT完整流程_第1张图片
  2. 去Nvidia官网下载JesonNano系统镜像文件;
  3. 使用Ether软件将系统烧录进SD卡。
    Jetson Nano 从头配置OpenCV+CUDA+QT完整流程_第2张图片

以上就是Jetson Nano烧录SD卡系统的基本流程,在烧录过程中会有提醒磁盘需要格式化,点击取消即可。

系统准备

将烧录好的SD卡插入Jetson Nano中,上电即可正常启动,可以通过网络远程控制Jetson Nano,这里有一篇教程讲的比较详细,但是我没有选择远程连接,而是直接连接了显示器和鼠标键盘。本身是已经预装了CUDA、OpenCV等库,在Jetson Nano开机之后,可以验证各个库的安装版本,详细可见这篇教程。一般来说OpenCV的版本会比较低,我会重新安装最新的版本,所以再这里只验证CUDA的安装情况。

  1. 更换更新源
    系统默认的更新源服务器在国外,直接安装软件速度比较慢,更换成国内的更新源速度比较快,但是有些软件安装会出问题,各位可以在出问题时,考虑的这方面的影响。
    这里给出中科大的更新源给大家参考:
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
#deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
#deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
#deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-proposed main multiverse restricted universe
#deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
#deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe

在网速找更新源地址时,要注意ubuntu-ports,有些地址没有ports的后缀,需要自行添加,否则会报错。
然后在终端输入命令,让系统根据更新源进行更新,如果使用的是国外的源,时间会比较漫长。

sudo apt-get update
sudo apt-get full-upgrade
  1. 检查CUDA安装情况
    Jeston Nano中已经安装了CUDA,但是需要更改环境变量之后,才能够查询到版本信息,所以首先添加环境变量。
sudo vim ~/.bashrc

在末尾添加

export CUDA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.0/bin:$PATH

保存之后,执行下面命令:

source ~/.bashrc

接下来就可以查询到CUDA的版本信息了,执行以下命令

nvcc -V

如果能够正常显示CUDA的版本信息,那就说明没有问题。

安装OpenCV with CUDA

基本流程是参照了这一篇文章,讲的非常详细,但是这篇文章并没有选择编译CUDA的部分,所以在Cmake的时候,需要添加一些和CUDA相关的选项,选项相关的参数是参考了OpenCV的官方文档。

  1. 编译工具下载配置
sudo apt-get install build-essential

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

这里经常会出现一个问题就是libjasper-dev会安装失败,网上有很多解决方法,这里给出一个经过测试成功的方法,就是添加一个软件源即可,命令如下:

sudo add-apt-repository "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe"

运行这条命令系统会自动更行软件源,如果没有的话,就再执行一次下面更新命令:

sudo apt update

添加之后再执行上面安装libjapsper-dev的命令。

  1. OpenCV源码下载
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

这里下载速度比较慢,耗时较长,下载之后可以备份一下,以免以后安装还要重新下载。

  1. OpenCV源码解压
unzip opencv-4.1.1.zip
unzip opencv_contrib-4.1.1.zip

这里大家根据自己下载的版本,自行更改文件名。
这地方有时候也会出现下载错误,有时候是网络问题,有时候是缓存不够,可以看一下这个解决方法。

  1. 生成makefile

进入解压后的opencv-4.1.1文件夹:

cd opencv-4.1.1/

新建build文件夹并进入build文件夹:

mkdir build
cd build

执行cmake:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local \
      -DCMAKE_BUILD_TYPE=Release \
      -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.1/modules \
      -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0 \
      -DCUDA_ARCH_BIN=5.3 \
      -DCUDA_ARCH_PTX="" \
      -DBUILD_PNG=OFF \
      -DBUILD_TIFF=OFF \
      -DBUILD_TBB=OFF \
      -DBUILD_JPEG=OFF \
      -DBUILD_JASPER=OFF \
      -DBUILD_ZLIB=OFF \
      -DBUILD_EXAMPLES=ON \
      -DBUILD_opencv_java=OFF \
      -DBUILD_opencv_python2=OFF \
      -DBUILD_opencv_python3=ON \
      -DENABLE_PRECOMPILED_HEADERS=OFF \
      -DWITH_OPENCL=OFF \
      -DWITH_OPENMP=OFF \
      -DWITH_FFMPEG=ON \
      -DWITH_GSTREAMER=OFF \
      -DWITH_GSTREAMER_0_10=OFF \
      -DWITH_CUDA=ON \
      -DWITH_GTK=ON \
      -DWITH_VTK=OFF \
      -DWITH_TBB=ON \
      -DWITH_1394=OFF \
      -DWITH_OPENEXR=OFF \
      -DINSTALL_C_EXAMPLES=ON \
      -DINSTALL_TESTS=OFF \
      ..

有几个参数需要说明一下:
-DCAMKE_INSALL_PREFIX 是opencv库的安装路径,可以自己更改
-DCMAKE_BUILD_TYPE 可以选择Release或者Debug类型
-DOPENCV_EXTRA_MODULES_PATH 是opencv_contrib的文件夹路径
-DCUDA_TOOLKIT_ROOT_DIR是CUDA库的路径,可以根据实际情况修改
-DCUDA_ARCH_BIN这个参数与显卡有关系,Jetson Nano的数值就是5.3

  1. 编译
make -j4

这一步骤是出错最多的时候,这里列举几个曾经遇到过的几个报错:

  • fatal error: Eigen/Core: No such file or directory
    第一步可以通过安装eigen:
sudo apt-get install libeigen3-dev

如果已经是安装了,还是报错,是因为默认的安装路径不对,需要重新映射:

sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
  • fatal error: boostdesc_bgm.i: No such file or directory
    解决方法,还有一个,就是把缺少的文件加上去
  • fatal error: features2d/test/test_detectors_regressions.impl.hpp: No such file or directory
    opencv-4.1.1/modules/features2d文件夹复制到build文件夹内可以解决。
  • fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory
    找到报错的文件,修改其头文件路径。
  1. 编译安装
make install

有时候不成功可以在前面加上sudo.

安装Qt

在linux系统,可以直接通过命令安装Qt。

sudo apt-get install qt5-default qtcreator -y
sudo reboot

重启之后就可以直接通过命令

qtcreator

打开qtcreator编译器了。
但是并不是所有Qt组件都默认安装了,比如我需要的qt串口库就需要自行安装,命令如下:

sudo apt-get install libqt5serialport5-dev

编译设置

在Qt中使用opencv库,需要在项目中的pro文件里添加opencv库的路径:

INCLUDEPATH += /usr/local/include/opencv4 \
               /usr/local/include/opencv4/opencv2 
LIBS += -L/usr/local/lib/ -lopencv_core

这里只是给大家举个例子,具体路径和库文件按自己的实际情况添加。

你可能感兴趣的:(Jetson Nano 从头配置OpenCV+CUDA+QT完整流程)