Raspberry Pi 3(Raspbian Jessie)にOpenCV3をインストールする方法(Python 2/Python 3)

   2018/02/28

Raspberry Pi 3にOpenCV3をインストールしようと思ったんだけど、思いの外面倒な手順を踏まないといけなかった。
OpenCV2は一発なのに、3はなんでapt-getで一発インスコさせてくれないんや・・・
めんどくさいけどこの方法が一番いいっぽいのでメモ。

こんな動画があったので最初に見とくといいかも。

ちなみにインストール時に実際見ていたサイトはコレ↓

似たようなことが日本語で書いてあるのはこっち↓

前準備

色々更新する。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo rpi-update

再起動する。

$ sudo reboot

いくつかの開発者向けツールをインストール。

$ sudo apt-get install build-essential git cmake pkg-config

JPEGとかPNGとかTIFFとかの画像を処理できるイメージIOをインストール。

$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

ビデオを処理できるビデオIOをインストール。

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev

OpenCVのサブモジュールである「highgui」をコンパイルできるように、GTKデベロップメントライブラリをインストール。
簡単なGUIインターフェースをコンパイルできるようになったり、スクリーンに画像を表示できるようになる。

$ sudo apt-get install libgtk2.0-dev

OpenCVの内部処理を最適化する。

$ sudo apt-get install libatlas-base-dev gfortran

Pythonのヘッダーファイルをインストールする。
OpenCVとPythonのバインディングでコンパイルできるようにするためらしい(?)

$ sudo apt-get install python2.7-dev python3-dev

OpenCVのソースコードを入手

※OpenCV 3.0.0をインストールすると仮定して手順を示すので、最新バージョンが違う場合は適宜読み替えてコマンドを打つこと!

OpenCVリポジトリからソースコードをダウンロード。

$ 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でダウンロードする。

$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.0.0.zip
$ unzip opencv_contrib.zip

OpenCVのコンパイルとインストール

ビルドの設定。

$ 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時間以上かかる。

$ make -j4

エラーなく終了したら、インストールする。

$ sudo make install
$ sudo ldconfig

Pythonのセットアップ

pyenvっていうのをインストールして使えるようにしておく。
これを使うと、Pythonのバージョンごとに設定が独立してるから、なんかミスって環境が壊れたとしても被害が少ない。
Raspberry Pi本体のPython環境にも影響を及ぼさないので安全。

詳しくはこの記事を見てインストールしてほしい。

ここでは2系の環境と3系の環境を用意するが、必要なければ片方だけでも良い。

$ pyenv install 2.7.13
$ pyenv install 3.6.1
$ pyenv global 3.6.1 2.7.13

終わったらNumPyをインストール。

$ pip install numpy

pyenvにシンボリックリンクを貼る

Python 2の場合

OpenCVのインストール先を確認する。
通常は「/usr/local/lib/python2.7/site-packages」にインストールされている。
※dist-packageの場合もある。

$ 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でも使えるようにシンボリックリンクを貼る。

$ 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の場合もある。

$ ls /usr/local/lib/python3.4/site-packages/
cv2.cpython-34m.so

「cv2.cpython-34m.so」ってのを「cv2.so」に名前を変更する。

$ cd /usr/local/lib/python3.4/site-packages/
$ sudo mv cv2.cpython-34m.so cv2.so

pyenvでも使えるようにシンボリックリンクを貼る。

$ 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で動くか確認して、バージョンが出力されれば、これにてインストール完了。

$ python
>>> import cv2
>>> cv2.__version__
'3.0.0'

インスコし終わったら、ホームディレクトリに残ってるopencv-3.0.0とopencv_contrib-3.0.0のフォルダは削除しても大丈夫。

タイトルとURLをコピーしました

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

six + eight =

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください