LoginSignup
10

More than 3 years have passed since last update.

Jetson Nano に OpenCV 4.1.2 をインストールする

Last updated at Posted at 2019-10-14

概要

Jetson Nano に、OpenCV 4.1.2 をインストールしました。

手順

以下の@asahi0301さんの記事のそのままです。
https://qiita.com/asahi0301/items/3c287190348552f19415
また、以前の記事でOpenCV 4.1.1 をビルドした時とほとんどかわりません
https://qiita.com/daisuzu_/items/f17d365a895a599f832f
ただし、スクリプトだけ変更。ファイル名は install_opencv4.1.2_Nano.sh にしました。個人的な趣味ですが、Python2 対応箇所のビルドはしていません。

#!/bin/bash
#
# Copyright (c) 2018, NVIDIA CORPORATION.  All rights reserved.
#
# NVIDIA Corporation and its licensors retain all intellectual property
# and proprietary rights in and to this software, related documentation
# and any modifications thereto.  Any use, reproduction, disclosure or
# distribution of this software and related documentation without an express
# license agreement from NVIDIA Corporation is strictly prohibited.
#

if [ "$#" -ne 1 ]; then
    echo "Usage: $0 <Install Folder>"
    exit
fi
folder="$1"
user="nvidia"
passwd="nvidia"

echo "** Remove OpenCV3.3 first"
sudo sudo apt-get purge *libopencv*

echo "** Install requirement"
sudo apt-get update
sudo apt-get install -y build-essential git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install -y python3.7-dev python-dev
sudo apt-get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
sudo apt-get install -y libv4l-dev v4l-utils qv4l2 v4l2ucp
sudo apt-get install -y curl
sudo apt-get update

echo "** Download opencv-4.1.2"
cd $folder
curl -L https://github.com/opencv/opencv/archive/4.1.2.zip -o opencv-4.1.2.zip
curl -L https://github.com/opencv/opencv_contrib/archive/4.1.2.zip -o opencv_contrib-4.1.2.zip
unzip opencv-4.1.2.zip 
unzip opencv_contrib-4.1.2.zip 
cd opencv-4.1.2/

echo "** Building..."
mkdir release
cd release/
cmake -D CUDA_HOST_COMPILER=/usr/bin/gcc-7 -D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" -D CUDA_VERSION="10000" -DWITH_NVCUVID=OFF -DENABLE_CCACHE=OFF -DEIGEN_INCLUDE_PATH=/usr/include/eigen3 -D HAVE_CUDA=1 -D WITH_CUDA=ON -D CUDA_ARCH_BIN="5.3" -D CUDA_ARCH_PTX="" -DWITH_FAST_MATH=OFF -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.2/modules -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -DPYTHON3_EXECUTABLE=/usr/bin/python3 -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/ -D WITH_CUBLAS=ON -D LAPACK_LIBRARIES=/usr/lib/aarch64-linux-gnu/libblas.so -D LAPACK_CBLAS_H=/usr/include/aarch64-linux-gnu/cblas.h ..
make -j2
sudo make install

echo "** Install opencv-4.1.2 successfully"
echo "** Bye :)"

一時的にスワップ領域を増やす

OpenCV 4.1.1 と比較すると、4.1.2 のビルドではメモリ領域を使いまくるようだ(てゆうか、途中でメモリ領域が確保できずにビルド失敗する)。なので、6GBほどスワップ領域を一時的に確保した(ビルド終わったら不要になる)

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=6144
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile

スクリプト実行

mkdir opencv
sh install_opencv4.1.2_Nano.sh opencv
(コンパイル/インストールが始まります)

で、ひたすら待つ

インストール後に試してみる

python3でしか確認していません。

>>> import cv2
>>> print(cv2.__version__)
4.1.2

となれば一応オーケー

注意すること

cmake 時に、ビルド先のフォルダに .cache というフォルダが作成されて、そこに、cudaoptflow 等の外部ライブラリがダウンロードされるのだが、 GitHub のご機嫌によっては、空ファイル(サイズ0)になってしまうことがある。その場合は、手動で適当な場所にダウンロードして、手動で cmake + make をやり直すしかないようだ。。。

仕掛かり課題

例えば、

pip3 install gym[atari]

のように、opencv-pythonに依存するインストールに失敗する。要は、

pip3 list

で opencv-python、opencv-contrib-python が表示されない(バージョン 4.1.2.27 と表示されるのが理想。これはJetson Nano に限らず、cmake からビルドするとそうなってしまうようだ)。また、pypi にはバイナリ形式でしか提供されてなく、しかも aarch64はじめ arm 向けは提供されていないので、別途手動で作成するしかないが、ちと工夫が必要と思われる。

以下のPyPi のリポジトリに作成方法が記述されている。要は、setup.py などのファイルを別途用意する必要がある、とのこと。これでJetson Nano向けのを作成すれば上手くいくかもしれないが、未着手。
https://pypi.org/project/opencv-python/

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10