Raspberry Pi 3(Raspbian Jessie)にOpenCV3をインストールする方法(Python 2/Python 3)
Raspberry Pi 3にOpenCV3をインストールしようと思ったんだけど、思いの外面倒な手順を踏まないといけなかった。
OpenCV2は一発なのに、3はなんでapt-getで一発インスコさせてくれないんや・・・
めんどくさいけどこの方法が一番いいっぽいのでメモ。
こんな動画があったので最初に見とくといいかも。
ちなみにインストール時に実際見ていたサイトはコレ↓
似たようなことが日本語で書いてあるのはこっち↓
前準備
色々更新する。
1 2 3 | $ sudo apt-get update $ sudo apt-get upgrade $ sudo rpi-update |
再起動する。
1 | $ sudo reboot |
いくつかの開発者向けツールをインストール。
1 | $ sudo apt-get install build-essential git cmake pkg-config |
JPEGとかPNGとかTIFFとかの画像を処理できるイメージIOをインストール。
1 | $ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev |
ビデオを処理できるビデオIOをインストール。
1 2 | $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev $ sudo apt-get install libxvidcore-dev libx264-dev |
OpenCVのサブモジュールである「highgui」をコンパイルできるように、GTKデベロップメントライブラリをインストール。
簡単なGUIインターフェースをコンパイルできるようになったり、スクリーンに画像を表示できるようになる。
1 | $ sudo apt-get install libgtk2.0-dev |
OpenCVの内部処理を最適化する。
1 | $ sudo apt-get install libatlas-base-dev gfortran |
Pythonのヘッダーファイルをインストールする。
OpenCVとPythonのバインディングでコンパイルできるようにするためらしい(?)
1 | $ sudo apt-get install python2.7-dev python3-dev |
OpenCVのソースコードを入手
※OpenCV 3.0.0をインストールすると仮定して手順を示すので、最新バージョンが違う場合は適宜読み替えてコマンドを打つこと!
OpenCVリポジトリからソースコードをダウンロード。
1 2 3 | $ cd ~ $ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.0.0.zip $ unzip opencv.zip |
OpenCV3をフルインストールするために、opencv_contribリポジトリからもダウンロード。
この時、さっきダウンロードしたデータのバージョンに合わせる。
OpenCV 3.0.0をダウンロードしたなら、contribの方も3.0.0でダウンロードする。
1 2 | $ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.0.0.zip $ unzip opencv_contrib.zip |
OpenCVのコンパイルとインストール
ビルドの設定。
1 2 3 4 5 6 7 8 9 10 11 | $ cd ~/opencv-3.0.0/ $ mkdir build $ cd build $ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D BUILD_opencv_python2=ON \ -D BUILD_opencv_python3=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.0.0/modules \ -D BUILD_EXAMPLES=ON .. |
これが終わったら、cmakeの出力を確認する。
Python 2の場合
「Python 2」セクションの、「Interpreter」と「numpy」のパスが、systemのPythonを指定しているか確認する。
Python 3の場合
「Python 3」セクションの、「Interpreter」と「numpy」のパスが、systemのPythonを指定しているか確認する。
次にOpenCVをコンパイルする。
-j4というのは、4つのコアを使うことを意味している。
ここで1時間以上かかる。
1 | $ make -j4 |
エラーなく終了したら、インストールする。
1 2 | $ sudo make install $ sudo ldconfig |
Pythonのセットアップ
pyenvっていうのをインストールして使えるようにしておく。
これを使うと、Pythonのバージョンごとに設定が独立してるから、なんかミスって環境が壊れたとしても被害が少ない。
Raspberry Pi本体のPython環境にも影響を及ぼさないので安全。
詳しくはこの記事を見てインストールしてほしい。
ここでは2系の環境と3系の環境を用意するが、必要なければ片方だけでも良い。
1 2 3 | $ pyenv install 2.7.13 $ pyenv install 3.6.1 $ pyenv global 3.6.1 2.7.13 |
終わったらNumPyをインストール。
1 | $ pip install numpy |
pyenvにシンボリックリンクを貼る
Python 2の場合
OpenCVのインストール先を確認する。
通常は「/usr/local/lib/python2.7/site-packages」にインストールされている。
※dist-packageの場合もある。
1 2 3 | $ ls -l /usr/local/lib/python2.7/site-packages/ total 1636 -rw-r--r-- 1 root staff 1675144 Oct 17 15:25 cv2.so |
pyenvでも使えるようにシンボリックリンクを貼る。
1 2 | $ cd ~/.pyenv/versions/2.7.13/lib/python2.7/site-packages/ $ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so |
Python 3の場合
OpenCVのインストール先を確認する。
通常は「/usr/local/lib/python3.4/site-packages」にインストールされている。
※dist-packageの場合もある。
1 2 | $ ls /usr/local/lib/python3.4/site-packages/ cv2.cpython-34m.so |
「cv2.cpython-34m.so」ってのを「cv2.so」に名前を変更する。
1 2 | $ cd /usr/local/lib/python3.4/site-packages/ $ sudo mv cv2.cpython-34m.so cv2.so |
pyenvでも使えるようにシンボリックリンクを貼る。
1 2 | $ cd ~/.pyenv/versions/3.6.1/lib/python3.6/site-packages $ ln -s /usr/local/lib/python3.4/site-packages/cv2.so cv2.so |
上手くいかない時はここも参照するといいかも。
インストールできたか確認
最後にPythonで動くか確認して、バージョンが出力されれば、これにてインストール完了。
1 2 3 4 | $ python >>> import cv2 >>> cv2.__version__ '3.0.0' |
インスコし終わったら、ホームディレクトリに残ってるopencv-3.0.0とopencv_contrib-3.0.0のフォルダは削除しても大丈夫。
この記事へのコメントはこちら