RaspberryPiにJAVA用のOpenCVをインストールしてWindows+Eclipseからリモートデバッグする方法①

記)2021/02/27
具体的な導入方法を順次追加する。
Windows10を基準に書く。Macは持っていないので不明
無茶苦茶長いので、頑張って読み込んで下さい。

ちなみに、以下の記事（英語）を読めばわかると言えば身も蓋もないので日本語で詳しく書くことにする。
https://qengineering.eu/install-opencv-4.5-on-raspberry-pi-4.html

①RaspberryPiにOSをインストールする。
https://www.raspberrypi.org/software/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/3157cc87-8433-9b65-79df-0fa2f02efbef.png)
あ）Windows10PCにマイクロSDカード(16gでも実験だけなら可能だが、実用的なものを作るには最低でも32G以上を推奨)をセットし前記ソフトをインストールし起動。指示に従い書き込み
い）マイクロSDをラズベリパイへセットし起動
う）VNC、SSHを有効化する。
え）キャッシュを増やす

```
swapon
sudo sed -i -e 's/SWAPSIZE=.*/SWAPSIZE=2048/g' /etc/dphys-swapfile
sudo systemctl restart dphys-swapfile.service
swapon
```

②以下の記事に従ってbellsoftのJDKとsambaまで導入をすませる。
https://qiita.com/kamoshika9999/items/a7cffb954220e4afed10
Windows10からラズパイで実行するjavaFXプログラムをリモートデバッグする方法～環境構築からデバッグ実行まで②～

③依存関係をインストールする。Windows10でVNCからターミナルを起動し、コピ&ペースト&実行
この依存関係にあるパッケージだが詳しく調査出来ていない。OpenCVの使われ方によってはパッケージが不足し実行時エラーが出るかもしれない。

```
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install cmake gfortran
$ sudo apt-get install libjpeg-dev libtiff-dev libgif-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install libgtk2.0-dev libcanberra-gtk*
$ sudo apt-get install libxvidcore-dev libx264-dev libgtk-3-dev
$ sudo apt-get install libtbb2 libtbb-dev libdc1394-22-dev libv4l-dev
$ sudo apt-get install libopenblas-dev libatlas-base-dev libblas-dev
$ sudo apt-get install libjasper-dev liblapack-dev libhdf5-dev
$ sudo apt-get install protobuf-compiler
```
④2021/02/27時点で4系の最新版である4.5.1をダウンロード

```
wget https://codeload.github.com/Itseez/opencv/zip/4.5.1
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/f2686fbf-33e0-56f7-e0a8-3c1f5185694b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/b15b3444-c044-43e7-b8f8-b469121e3aec.png)
/home/pi/に4.5.1のアーカイブがダウンロードされる。

⑤フォルダ作成、移動、解凍する

```
mv 4.5.1 opencv.zip
unzip opencv.zip 
cd opencv-4.5.1/
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/fea5e69a-6d65-dc6e-b98c-3fb17d9d72c6.png)

⑥ANTのインストール

```
sudo apt-get install ant

```
⑦ANT_HOMEとJAVA_HOMEの設定 .bashrcの編集

```
sudo nano ~/.bashrc
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/216dd790-fb9b-f7be-0e89-8353c71b5a80.png)
追記する。パスは適宜修正必要

⑧ANTのシンボリックリンクの修正
これをやらないとcmake-guiでパスが通らない

```
ln -snf /usr/share/ant/bin/ant /bin/ant
```

⑨ビルド用フォルダ作成
ここにopencv-4.5.1.jaraとネイティブライブライブラリである.soファイルが作成される
今回この２ファイルを作成できれば成功

```
mkdir build
cd build
```
⑩cmake-guiを実行 sudoをつけないとエラーが出るので注意
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/67251a39-fa22-e5ef-3897-a1f5ff5d729c.png)
⑪ソースコードとビルドフォルダを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/486e33d3-125c-117f-c87d-653e7403fa05.png)
⑫GroupedとAdvancedにチェックを入れてConfigreボタンを押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/727f337f-df82-c197-3053-fe54825166ff.png)
⑬CMakeSetupダイアログが出るのでそのままFinishボタンを押す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/4e6b5eb2-529a-42ea-95f1-eb91f0c9ddb3.png)
⑭Configuring doneと表示されれば一応成功だが....肝心のJAVAラッパーが作成できていない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/b7fd8c8e-d990-6acb-825c-9ef02d7c3f64.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/26f21d47-61e9-0fe4-9268-7de2609d37ed.png)

⑮エントリにJAVA_HOMEが無いのが原因
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/26cb6e9f-ff29-31ed-ddd9-13e68c018b48.png)

⑯エントリを追加する。間違いやすいところなので詳しく書く
あ）現在選択されているJDKを確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/723a7c5a-2eb3-4d68-db9d-9dbaad6e837e.png)

* 1            /usr/lib/jvm/bellsoft-java13-arm32-vfp-hflt/bin/java 
が選択されているので<br>
/usr/lib/jvm/bellsoft-java13-arm32-vfp-hflt/<br>
をクリップボードへコピーしておく。
bin/javaまで選択しないこと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/8a6c28fa-7e8b-f39e-b483-503d067937c4.png)

い）CMake-guiへ戻り、Add Entryボタンを押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/8624f9f7-b248-ce37-cc1b-e965f70617f3.png)
う)出てきたダイアログに先ほどクリップボードにコピーしたパスをValue値に張り付け、OKを押す
NameにJAVA_HOME
TypeにPATHを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/4d3db49f-eb32-1178-5b39-4a83322b905a.png)

え)エントリの最上部に追加されるので確認する
  この時点ではJAVAのエントリグループにグループ化されて入らず、Configureを実行した後でグループ化される

お）Configureボタンを押す
    完了後、ログのjavaの項目を確認するとYESに変わっているはず
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/daadf20a-9471-ef86-eab8-16feda38eedc.png)

か)もう一度Configreボタンを押す。するとUngrouped EntriesとOPENCVのエントリが赤から白に変わる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/32bb70be-63b0-d1a3-15ac-df4bae491ba2.png)
き)Generateボタンを押す。Generating doneと表示されればcmake-guiでの作業は終了。
cmake-guiを閉じる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/bbc87908-5bc8-403d-8beb-149590d87c86.png)

⑰カレントフォルダが/home/pi/opencv-4.5.1/buildになっていることを確認してからmakeを実行する。
約６時間
```
sudo make -j3
```
今回はコア３つで実行することにする
失敗する場合は依存関係のパッケージが不足していのでログをよく見て適宜インストールすること

⑱カレントフォルダが/home/pi/opencv-4.5.1/buildになっていることを確認してからインストールする

```
sudo make install
```

⑲/home/pi/opencv-4.5.1/buildフォルダの
binに opencv-4.5.1.jar
libに libopencv-4.5.1.so
がそれぞれ入っているので確認しておく。
結局必要なのはこの二つで、どこに置いてもよいのでclasspathとDjava.library.pathで設定された位置にあれば良い

今回はここまで、次回はopencvのテスト起動とeclipseからリモートデバッグする方法を書く予定