Jetson nano编译安装OpenCV4.1.1和OpenCV_contirb-4.1.1

删除本地OpenCV环境

Jetson nano官方镜像(jetson-nano-sd-r32.1-2019-03-18.img)是自带OpenCV3.3.1的,因此在编译安装OpenCV4之前,需要删除本地的OpenCV3.3.1环境。

编译环境:ubuntu18.04

sudo apt-get purge libopencv*
sudo apt autoremove
sudo apt-get update

安装依赖库

sudo apt-get install build-essential
sudo apt-get install libglew-dev libtiff5-dev zlib1g-dev libjpeg-dev libavcodec-dev libavformat-dev libavutil-dev libpostproc-dev libswscale-dev libeigen3-dev libtbb-dev libgtk2.0-dev pkg-config libpng-dev
sudo apt-get install libatlas-base-dev gfortran

如果出现can’t locate package问题,一般只需要更新镜像即可。

sudo apt update
sudo apt upgrade

获取源码

源码可以直接从OpenCV官方页面上下载,包括两部分OpenCV-4.1.1和OpenCV_contirb-4.1.1的源码。
一般github官网下载速度较慢,这里我分享了自己百度云链接,需要的同学自取。
链接:https://pan.baidu.com/s/1cyy9PinUsjsq3IIF13kF1w
密码:sblg

配置编译

将源码下载完毕后,将OpenCV-4.1.1和OpenCV_contirb-4.1.1解压后放置在同一主目录opencv4下。
进入opencv-4.1.1目录,运行以下命令:

mkdir build
cd build

然后配置cmake选项:

cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -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 \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0 \
    -DCUDA_ARCH_BIN=5.3 \
    -DCUDA_ARCH_PTX="" \
    -DINSTALL_C_EXAMPLES=ON \
    -DOPENCV_ENABLE_NONFREE=ON \ #SIFT模块
    -DINSTALL_TESTS=OFF \
    -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.1/modules \
    .. 

cmake选项根据自己的实际需求选择模块ON或OFF,相应目录也根据自己的实际情况更改。

cmake时可能会需要下载一些文件,如vgg_generated_48.i、face_landmark_model.dat等,由于是外网的原因,这些文件会出现超时下载不成功的现象,虽然这里下载不成功,不会出现红色的error报错,但会影响到后面的make操作,因此必须要确保下载成功。我将我编译时需要下载的文件放在了上面的百度云链接中,需要的同学可以自取。

将这些文件下载好放置在随意目录如/home/ryu/Documents/opencv4/installFile中,然后更改opencv_contrib-4.1.1/modules/xfeatures2d/cmake/download_vgg.cmake和opencv_contrib-4.1.1/modules/face/CMakeLists.txt中的URL地址,具体修改如下:Jetson nano编译安装OpenCV4.1.1和OpenCV_contirb-4.1.1_第1张图片
这样就可以将从对应网址的下载操作更改为从本地文件进行复制,解决了cmake的问题。有些人可能还会出现ippcv文件下载失败的问题,原理都是一样的,操作也是一样的,可以参考我文章末尾的参考文献进行文件下载和处理。

Cmake配置完后,即可进行make:

sudo make -j8

make的过程中可能还会出现部分cpp文件中include 头文件找不到的情况,只需要将这些cpp文件中的include路径进行修改,修改为包含相应头文件的绝对路径即可。

安装

直接运行:

sudo make install

测试

  cd opencv-4.1.1/smaples/cpp/example_cmake 
  cmake .  
  make
  ./opencv_example # 测试demo,如果电脑上有摄像头会打开摄像头,如果没有则屏幕上会出现hello opencv的界面

如果测试不成功,可能原因是环境变量没有正确配置,可以进行如下操作:

 sudo gedit /etc/ld.so.conf.d/opencv.conf 此时是空的,写进入 /usr/local/lib  //将opencv库添加到路径,从而可以让系统找到
 sudo ldconfig  //使上述配置命令生效
 sudo gedit /etc/bash.bashrc //配置bash 在末尾添加如下命令
  
      PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
      export PKG_CONFIG_PATH 
 
 source /etc/bash.bashrc  //使bash配置生效
 sudo updatedb           //更新

重新测试即可。

参考文献

Jetson nano编译安装OpenCV 4
ubuntu16.04 安装opencv IPPICV 和 face_landmark_model.dat下载不下来的问题解决
Ubunt16.04 下安装并测试 opencv-4.0 opencv-contrib 模块

你可能感兴趣的:(嵌入式)