ろぐれこーど

限界組み込みエンジニアの学習記録とちょっぴりポエム

OpenCVをソースからビルドしてanacondaにインストール

pythonOpenCVを使う場合、conda経由でインストールするのがもっとも簡単かつ一般的だと思う。

conda install -c menpo opencv=3.3.1

みたいにすれば一発で入る。

バージョン一覧が確認したければ

conda search -c menpo opencv

とすれば、condaからインストールできるopencvのバージョンが一覧で表示される。

しかしこの方法だとビルド済みバイナリが取られてくるので、opencvビルト時のカスタマイズができない。 デフォルトではffmpegなどの動画ファイルが扱えないとのことなので、その辺をいじりたければソースからビルドする必要がある。

今回は最低限の設定でインストールする手順をメモしておく。必要があればcmakeのオプションを指定すればいけるはず。

環境とか
- Mac OSX10.12.6
- pyenv経由でanaconda3-5.0.1インストール
- 2017/12/15現在で最新のopencv3.3.1を入れる

依存あれこれインストールしておく

brew install git cmake pkg-config jpeg libpng libtiff openexr eigen tbb

git cloneしてbuildディレクトリに入る

git clone https://github.com/opencv/opencv.git
cd opencv
mkdir build
cd build

過去バージョンとかが欲しい場合は Releases からソースを取ってこれる。

cmakeしてビルドする

cmake -D CMAKE_INSTALL_PREFIX=$(python -c "import sys; print(sys.prefix)") -D PYTHON3_EXECUTABLE=$(which python) -D PYTHON3_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -D PYTHON3_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..

make -j4
sudo make install

CMAKE_INSTALL_PREFIXでインストール場所、PYTHON3_EXECUTABLEPYTHON3_INCLUDE_DIRpythonの実体、PYTHON3_PACKAGES_PATHでpackageの場所を指定している。distutils.sysconfigにパスの情報とかを取ってくるget_python_incget_python_lib関数が用意されているのでそれを使う。

これでpyenv/versions/anaconda----/以下のディレクトリにopencvがインストールされる。

python
import cv2

で入ってるか確認する。

ただし、アンインストールは通常buildディレクトリ内で

sudo make uninstall

でできるのだが、なぜかこの方法で入れるとpermission deniedと出て全ファイルが削除できないことがあった。

とりあえずスーパーユーザで削除するか、pyenvからanacondaごと消すことで一応解決する。