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

   2018/02/28

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

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

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

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

前準備

色々更新する。

再起動する。

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

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

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

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

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

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

OpenCVのソースコードを入手

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

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

OpenCV3をフルインストールするために、opencv_contribリポジトリからもダウンロード。
この時、さっきダウンロードしたデータのバージョンに合わせる。
OpenCV 3.0.0をダウンロードしたなら、contribの方も3.0.0でダウンロードする。

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

ビルドの設定。

これが終わったら、cmakeの出力を確認する。

Python 2の場合

「Python 2」セクションの、「Interpreter」と「numpy」のパスが、systemのPythonを指定しているか確認する。

Python 3の場合

「Python 3」セクションの、「Interpreter」と「numpy」のパスが、systemのPythonを指定しているか確認する。

次にOpenCVをコンパイルする。
-j4というのは、4つのコアを使うことを意味している。
ここで1時間以上かかる。

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

Pythonのセットアップ

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

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

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

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

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

Python 2の場合

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

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

Python 3の場合

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

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

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

上手くいかない時はここも参照するといいかも。

インストールできたか確認

最後にPythonで動くか確認して、バージョンが出力されれば、これにてインストール完了。

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

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

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

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

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

seven + 6 =

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