出力を入力へ

プログラミングに関する自分が考えた事を中心にまとめます

Ubuntu Desktop 16.04上で、OpenCV3.1.0をビルドする

軽い気持でOpenCV3.1.0をビルドしようとしたら 想像以上に苦労したのでそのまとめ。

依存モジュールのインストール

まずは依存モジュールをインストールする。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install \
        build-essential \
        cmake \
        git \
        pkg-config \
        libjpeg8-dev \
        libtiff5-dev \
        libjasper-dev \
        libpng12-dev \
        libavcodec-dev \
        libavformat-dev \
        libswscale-dev \
        libv4l-dev \
        libatlas-base-dev \
        libgtk2.0-dev \
        gfortran

正直なところ、依存ライブラリはどれが必須でどれがオプションか不明。

python3.5のセットアップ

今回はvirtualenv等は利用せず直接インストール。 ただし、汎用的にはバージョンを切り替えられるようにした方が便利だと思う。

pythonビルド用のモジュールをインストールする。

sudo apt-get install python3-dev

numpyのためにpipをインストールする

wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

必要な計算パッケージをインストールする。

sudo pip install numpy

opencvソースコードの取得

opencvおよびopencv_contribのソースコードgithubより取得する。 opencv_contribは拡張モジュールなので省略可能。

cd ~
git clone git://github.com/opencv/opencv
cd opencv
git checkout 3.1.0
cd ~
git clone git://github.com/opencv/opencv_contrib
cd opencv_contrib
git checkout 3.1.0

cmake & make

ビルドのためのcmakeを実行する。

mkdir ~/opencv/build
cd ~/opencv/build
cmake \
    -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
    -D BUILD_EXAMPLES=ON \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    ..

cmakeの実行結果は以下。

configuration result for OpenCV 3.1.0

正常に完了したらビルドする。

make -j2
sudo make install

実際のインストールは

~/opencv/build/python3/cv2.cpython-35m-x86_64-linux-gnu.so

/usr/local/lib/python3.5/dist-packages/

にコピーするだけでもよい。

動作検証としてcv2モジュールがインポートできることを確認する。

$ python3
Python 3.5.1+ (default, Mar 30 2016, 22:46:26) 
[GCC 5.3.1 20160330] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.1.0'

参考

結局一番参考になったのは以下のサイトでした。 www.pyimagesearch.com

手元にあるOpenCV本は以下だけどさすがに古そう。

OpenCV プログラミングブック

OpenCV プログラミングブック

OpenCV3関連はまだいい書籍は無いみたいなので公式ドキュメントが参考になりそう。

Python向けチュートリアル
OpenCV: OpenCV-Python Tutorials

モジュール一覧
OpenCV: OpenCV modules

APIリファレンス (3.0.0向け、3.1.0向けは未整備)
OpenCV API Reference — OpenCV 3.0.0-dev documentation

必要なモジュールやビルドオプションの精査は 実際にOpenCVを利用しながら別途確認したい。