OpenCVをソースからビルドしてanacondaにインストール
pythonでOpenCVを使う場合、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_EXECUTABLE
とPYTHON3_INCLUDE_DIR
でpythonの実体、PYTHON3_PACKAGES_PATH
でpackageの場所を指定している。distutils.sysconfig
にパスの情報とかを取ってくるget_python_inc
とget_python_lib
関数が用意されているのでそれを使う。
これでpyenv/versions/anaconda----/以下のディレクトリにopencvがインストールされる。
python import cv2
で入ってるか確認する。
ただし、アンインストールは通常buildディレクトリ内で
sudo make uninstall
でできるのだが、なぜかこの方法で入れるとpermission denied
と出て全ファイルが削除できないことがあった。
とりあえずスーパーユーザで削除するか、pyenvからanacondaごと消すことで一応解決する。