とにかくRaspberryPiでPython3.6で動くopenCVをできるだけ簡単に入れたい。
Python2系やPython3.5ではなく、Python3.6なのだ。やんごとなき理由で。
そんな奮闘記。
結論からいえば、RaspberryPiにおいてはpip系のコマンドなどで楽ちんに入れることはできません。公式からbuildするしか方法がないっぽいです。結論だけ知りたい方は「解決策」項だけお読みください。
奮闘記(全部失敗)
pip install opencv-python
で一発でいけるっしょと思っていたが上記コマンドはmacOSではいけるがraspbianでは無理
ok、それならとpyenvでpython3.6系の環境を入れてから以下のページで1からビルドしようとしたが、情弱かつ我慢強くない自分は「もっとラクな方法は無いものか…」と挫折
余計なものが入ってゴチャゴチャするのが嫌だけど仕方ない、anacondaを入れてconda install opencvで一発で入れるか…と思い、pyenvでanaconda3環境を入れようとしたところ、以下のエラーが出て入らない…(minicondaも試したが同じエラーでコケる)
こちらの記事いわく、anaconda/minicondaはpython3.4までしか用意されていないらしい。ツライ…
そこで、上記の記事に入れているBerry Condaなるものを入れました。
そこでおもむろに conda install opencvするとまたコケるのですが、こちらの記事を参考にして conda install -c conda-forge opencv すると入った。
いやー、めでたしめでたしとしたかったのですが、そうは問屋がおろさん
import cv2するとたしかにopencvの3.1.1が入っていることが確認できるのですが、いざコードを実行すると以下のような謎のエラーが出る
なんだかよくわからないが、どうやらconda installのopencvはダメだから公式からビルドしろと書かれている気がする。マジかよ… RaspberryPiでopenCV(with Python3.6以上)入れるのどんだけツライんだよ…
解決策
さらに別の方法を探し、すがるような気持ちでこちらを参考にして以下を実行
動作確認環境がPython3.4となっているが気にしない気にしない、うごけばいいんや…
make -j4で90minかかるとなっているが、最初のapt-get updateとdist-upgradeでも1hくらいかかった。長い。
最後のmakeするところで -j4 オプションを付けると自分の場合延々に処理が終わらなかったが、-j4を取ってmakeだけすると完了する。
$ sudo apt-get update #ここもそこそこ長い
$ sudo apt-get dist-upgrade #ここもそこそこ長い
$ sudo apt-get install build-essential cmake pkg-config
$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
$ sudo apt-get install libgtk2.0-dev
$ sudo apt-get install libatlas-base-dev gfortran
$ cd ~
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
$ unzip opencv.zip
$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
$ unzip opencv_contrib.zip
$ cd ~/opencv-3.1.0/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules -D BUILD_EXAMPLES=ON ..
$ make #注! -j4 とすると延々に処理が終わらない。ここも90分くらいかかる
$ sudo make install
$ sudo ldconfig
自分の環境ではこれでようやく目的を達成した。
<その他参考>