Nvidia TX2 安装 opencv3.2.0 及在ros melodic下配置opencv3.2.0

前置:

Nvidia JetsonTx2 Ubuntu18.04 刷机教程(详细排雷)_prophet_xh的博客-CSDN博客_tx2 虚拟机

Nvidia JetsonTx2 Ubuntu18.04 安装 ros melodic(顺带快速解决sudo rosdep init问题)_prophet_xh的博客-CSDN博客

Nvidia TX2 Ubuntu18.04 安装 IntelRealsense L515 realsense SDK 及 Realsense ROS (make各种问题解答,一篇到位版本)_prophet_xh的博客-CSDN博客

再次强调,不谈环境的安装教程纯属耍流氓。本教程适用于Nvidia TX2 ,cuda 10,ubuntu18.04的环境,并不通用,对其他的版本只起到参考作用。

继完成一系列环境配置后,准备开始用tx2进行rtabslam。但由于刷完机的板子自带的4.1.1的opencv版本,所以我们需要安装opencv3.2.0

没有必要去卸载opencv4,ubuntu下支持多版本的opencv共存,盲目卸载反而会引发更多问题。

1.首先去下载opencv3.2.0的sourse文件。

Releases - OpenCV

去上面这个官网找到3.2.0的版本(一页页翻),下载完成以后,可以提取到home目录下

如果下载慢,就点这个下,不用积分的哈

opncv3.2.0的官方代码包-机器学习文档类资源-CSDN下载

1.1安装一些依赖,一般opencv刷完机就已经存在了,这里补充记录下,刷机完成的用户可以跳过下面,直接到步骤2

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

 这里可能有这个问题

E:无法定位软件包libjasper-dev

 解决方案

一般的教程中是 sudo add-apt-repository "……" ,然后即可解决

但是很明显tx2的架构和一般的ubuntu系统不同

如果贸然使用,会出现

E:无法下载http://security.ubuntu.com/ubuntu/dists/xenial-security/main/binary-arm64/Packages  404 Not Found [IP: 91.189.91.38 80]

如果使用了一般教程的解决方案,而没有解决

此时,我们先把刚刚添加的 sudo add-apt-repository "……"去除掉(“.....”是你刚刚添加的ppa,每个教程里的都不一样,我就用'......'来替代泛指一下)

sudo add-apt-repository -r "......"

然后添加tx架构的 ppa

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

 解决完毕

2.编译

cd opencv-3.2.0
mkdir build
cd build

再在终端输入下面这么一长段,直接复制到终端即可,这些配置适用于cuda10,其他环境请酌情配置

 关于CMAKE_INSTALL_PREFIX=/usr/local/opencv320是你的安装路径,那你也可以写其它的

本文opencv320是自己加的文件夹,你可以取其它名字

该路径会影响到后期我们配置cv_birdge 或者 cmake list,记住你安排的路径

一般的CMAKE_INSTALL_PREFIX=/usr/local,这也是opencv默认安装路径

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv320 -D BUILD_PNG=OFF -D BUILD_TIFF=OFF -D BUILD_TBB=OFF -D BUILD_JPEG=OFF -D BUILD_JASPER=OFF -D BUILD_ZLIB=OFF -D BUILD_EXAMPLES=ON -D BUILD_opencv_java=OFF -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF -D WITH_OPENCL=OFF -D WITH_OPENMP=OFF -D WITH_FFMPEG=ON -D WITH_GSTREAMER=ON -D WITH_GSTREAMER_0_10=OFF -D WITH_CUDA=ON -D WITH_GTK=ON -D WITH_VTK=OFF -D WITH_TBB=ON -D WITH_1394=OFF -D WITH_OPENEXR=OFF -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0 -D CUDA_ARCH_BIN=6.2 -D CUDA_ARCH_PTX="" -D INSTALL_C_EXAMPLES=ON -D INSTALL_TESTS=ON -D OPENCV_TEST_DATA_PATH=…/opencv_extra/testdata -D WITH_LAPACK=OFF ..

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv320 -D BUILD_PNG=OFF -D BUILD_TIFF=OFF -D BUILD_TBB=OFF -D BUILD_JPEG=OFF -D BUILD_JASPER=OFF -D BUILD_ZLIB=OFF -D BUILD_EXAMPLES=ON -D BUILD_opencv_java=OFF -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF -D WITH_OPENCL=OFF -D WITH_OPENMP=OFF -D WITH_FFMPEG=ON -D WITH_GSTREAMER=ON -D WITH_GSTREAMER_0_10=OFF -D WITH_CUDA=ON -D WITH_GTK=ON -D WITH_VTK=OFF -D WITH_TBB=ON -D WITH_1394=OFF -D WITH_OPENEXR=OFF -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0 -D CUDA_ARCH_BIN=6.2 -D CUDA_ARCH_PTX="" -D INSTALL_C_EXAMPLES=ON -D INSTALL_TESTS=ON -D OPENCV_TEST_DATA_PATH=…/opencv_extra/testdata -D WITH_LAPACK=OFF ..

 一般这样在tx2,cuda10上cmake,不会出现报错,耐心等待即可

cmake结束后

make -j4

继续耐心等待

sudo make install

 这里可能会报错

CMake Error at data/cmake_install.cmake:72 (file):
  file INSTALL cannot find
  "/home/prophet/opencv-3.2.0/…/opencv_extra/testdata".
Call Stack (most recent call first):
  cmake_install.cmake:89 (include)

Nvidia TX2 安装 opencv3.2.0 及在ros melodic下配置opencv3.2.0_第1张图片

不要慌,我们去打开这个在date下cmake文件

Nvidia TX2 安装 opencv3.2.0 及在ros melodic下配置opencv3.2.0_第2张图片

Nvidia TX2 安装 opencv3.2.0 及在ros melodic下配置opencv3.2.0_第3张图片

找到最后,发现是最后出现的问题,而最后是share,分享的功能,对应用不造成影响,可以如图,将后3行注释掉(因为是在home目录下,双击就能编辑)

Nvidia TX2 安装 opencv3.2.0 及在ros melodic下配置opencv3.2.0_第4张图片

 继续

sudo make install

完成

3.配置环境 

创建opencv.conf文件

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

添加下面内容

/usr/local/opencv320/lib

完成以后,终端输入

sudo ldconfig

 接着添加路径

sudo gedit /etc/bash.bashrc

在文件最后添加路径(路径要自己安装路径,比如前文我是/usr/local/opencv320)

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv320/lib/pkgconfig 
export PKG_CONFIG_PATH

刷新一下下

source /etc/bash.bashrc 

 此时我们已经了opencv3.2.0的安装,如果没什么问题的话,重新打开一个终端,输入

pkg-config opencv --modversion

应该会显示当前的opencv版本是3.2.0

4.ros 配置

终于结束了安装,那我们如何去让ros引用,ros下自带的是opencv4.1.1

安装结束了,并不代表就能用上,我们必须去让ros使用,而我们也没有卸载opencv4

故,我们需要将ros与opencv3.2.0连接起来

此时,我们要做的是去更改cv_birdge文件

打开cv_birdgeconfig.cmake文件

sudo gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake

修改画线的几行,注释掉的是原文件,下方的是改完的,根据自己的路径该:Nvidia TX2 安装 opencv3.2.0 及在ros melodic下配置opencv3.2.0_第5张图片 

像图片中这样改 ,一共是三处。

if(NOT "include;/usr/include;/usr/include/opencv " STREQUAL " ")

改成

if(NOT "include;/usr/local/opencv320/include/opencv2;/usr/local/opencv320/include/opencv " STREQUAL " ")

把 

set(_include_dirs "include;/usr/include;/usr/include/opencv4")

改成 

set(_include_dirs "include;/usr/local/opencv320/include/opencv2;/usr/local/opencv320/include/opencv;/usr/local/opencv320/include;/usr/include")

 把

set(libraries "cv_bridge;/usr/lib/aarch64-linux-gnu/libopencv_core.so.3.2.0;/usr/lib/aarch64-linux-gnu/libopencv_imgproc.so.3.2.0;/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0")

改成

set(libraries "cv_bridge;/usr/local/opencv320/lib/libopencv_core.so.3.2.0;/usr/local/opencv320/lib/libopencv_imgproc.so.3.2.0;/usr/local/opencv320/lib/libopencv_imgcodecs.so.3.2.0")

保存退出!

目前为止已经完成opencv3.2.0安装及ros环境配置

下一章将进行rtabmap的安装!

你可能感兴趣的:(Nvidia,JetsonTX2,opencv,人工智能,计算机视觉)