2018年3月15日木曜日

pyenv環境のpythonににOpenCV3.4.1を入れる

ubuntu/pyenv/python3.6.4の環境で、OpenCV3.4.1をインストールする時のメモです。
OpenCVのインストールについて調べるとsystemのpythonに入れる方法がたくさんでてきて
pyenvで最新のpython試したいぜ!な人向けの解説って少ないですよね。


pythonインストール

pythonのインストール時にはlibpythonを作ってもらうために、enable-sharedオプションが必要です。ということで、以下のようにpythonを再インストールする必要があります。

ONFIGURE_OPTS="--enable-shared" pyenv install 3.6.4

(注:readlineが足りねぇよ。等の警告がでたら素直に追加インストールしましょう。)

OpenCVダウンロード

以下URLからソースコードをダウンロードします。(gitで最新追い駆けたい人はgit cloneで)

https://github.com/opencv/opencv/releases
https://github.com/opencv/opencv_contrib/releases

解答すると、opencv-3.4.1とopencv_contrib-3.4.1 ディレクトリができてるはずです。

依存パッケージインストール

OpenCVのサイトを参考に以下をインストール。

sudo apt install build-essential
sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

 

インストール

pyenvのインストールディレクトリは、以下のようになってるはずなので「pyenv which python
」等として調べてください。でとりあえずPROOT環境変数にいれています(書きやすくするため)

export PROOT=~/.pyenv/versions/3.6.4

buildディレクトリを作ってcmakeを走らせます。インストール先はPROOTします(root権限不要)。
注意事項としてはPYTHON3_LIBRARIESを設定する事と、PYTHON2やJAVAを無効にしておくこと。そうしないと、python3のみにインストールとする事で、すべてのライブラリをroot権限なしでインストールできるようになります。 

cd opencv-3.4.1/
mkdir build
cd build



 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.1/modules/ -D BUILD_opencv_python3=ON  -D CMAKE_INSTALL_PREFIX=$PROOT -D PYTHON3_LIBRARIES=$PROOT/lib/libpython3.6m.so -D BUILD_opencv_python2=OFF -D BUILD_JAVA=OFF  ..

注:cmakeをやり直す時はCMakeCache.txtを削除してからcmakeやりおします。
 ここでPython3の項目に「NO」がないことを確認します。



あとはmakeを実行してインストール。

make -j
make install


インストールされてる事の確認は、pythonを起動してimport cv2をすればおk

あと、ROSを使ってる人等は環境変数PYTHONPATHが設定されてたりします。
そっちにpython2.7用のOpenCVが入ってるのでそっちが参照されてしまいます。
unset PYTHONPATHしましょう。