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

#概要
Jetson Nano に、OpenCV 4.1.1 をインストールしました。

#手順
以下の@asahi0301さんの記事のそのままです。
・ https://qiita.com/asahi0301/items/3c287190348552f19415
ただし、スクリプトだけ変更。ファイル名は install_opencv4.1.1_Nano.sh にしました。

```
#!/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.1"
cd $folder
curl -L https://github.com/opencv/opencv/archive/4.1.1.zip -o opencv-4.1.1.zip
curl -L https://github.com/opencv/opencv_contrib/archive/4.1.1.zip -o opencv_contrib-4.1.1.zip
unzip opencv-4.1.1.zip 
unzip opencv_contrib-4.1.1.zip 
cd opencv-4.1.1/

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.1/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.1 successfully"
echo "** Bye :)"
```

### スクリプト実行
```
mkdir opencv
sh install_opencv4.1.1_Nano.sh opencv
(コンパイル/インストールが始まります)
```
で、ひさすら待つ

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


今回は、python2 向けモジュールは作成していないので、python3でしか確認していません。
python3 起動して、

```
>>> import cv2
>>> print(cv2.__version__)
4.1.1
```
となれば一応オーケー

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

### 仕掛かり課題
例えば、

```
pip3 install gym[atari]
```

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

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

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