はじめに
Python3とOpenCV4で開発環境を構築します。Pythonバージョン管理にpyenv, パッケージマネージャにpipenvを用います。
環境
macOS High Sierra
Pythonの準備
pyenv
pyenvはPythonのバージョンを管理する目的で利用します。これを使うことでPython3.5とPython3.7の切り替えといったことが簡単にできるようになります。
brewを用いてインストールします。
$ brew install pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
Pythonのインストール
pyenvを用いて目的バージョンのPythonをインストールして、デフォルトでそれを使うようにします。ここでは最近リリースされた3.7.2を利用します。
$ pyenv install 3.7.2
$ pyenv global 3.7.2
$ python --version
Python 3.7.2
インストール時に下記のようなエラーが出るときはxcode-select
でcommand line toolsを入れます。
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1
$ xcode-select --install
pipenv
pipenvはPythonのパッケージマネージャです。以前まではpip3やvirtualenvなどを用いてライブラリを管理していたと思うのですが、pipenvを用いることでそれらを直接扱う必要が無くなります。
requirements.txt ファイルの管理は 問題になり得る ので、代わりにPipenvは Pipfile および Pipfile.lock を使い、最小限の依存関係の宣言と直前にテストした依存関係の組み合わせを区別します。
(https://pipenv-ja.readthedocs.io/ja/translate-ja/)
pipenvをダウンロードします。
$ brew install pipenv
pipenvはデフォルトで仮想環境を~/.local/share/virtualenvs
に作成しますが、プロジェクトディレクトリ内に作成した方が管理しやすいのでそのように設定変更します。
PIPENV_VENV_IN_PROJECT
という環境変数をtrueに設定します。
$ echo 'export PIPENV_VENV_IN_PROJECT=true' >> ~/.bashrc
$ source ~/.bashrc
プロジェクトの作成
pipenvによる仮想環境の作成
OpenCVを用いて開発するプロジェクトを作成します。
$ mkdir myproject
$ cd myproject
pipenvにより仮想環境を作成します。
$ pipenv install --python 3.7.2
ここで以下のようなエラーが出ることがあります。
Locking [packages] dependencies...
lib/python3.7/site-packages/pipenv/utils.py", line 402, in resolve_deps
req_dir=req_dir
File "/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv/utils.py", line 250, in actually_resolve_deps
req = Requirement.from_line(dep)
File "/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 704, in from_line
line, extras = _strip_extras(line)
TypeError: 'module' object is not callable
pipenvのバージョンが古いとpip18.1に対応していないためこのようなエラーが出ます。pipenvのバージョンを確認して$ brew upgrade pipenv
でアップグレードしましょう。
OpenCVのインストール
次にOpenCVをインストールします。opencv-pythonの方々が最近OpenCV4のビルドをリリースしてくださったのでそれを利用します。
$ pipenv shell #仮想環境のアクティベート
$ pipenv install opencv-python
opencv-contrib-pythonとすればcontribモジュールもインストールすることができます。また、もしOpenCV3系が必要なら以下のように指定します。
pipenv install opencv-python==3.4.5.20
テスト
動作テストをします。カレントディレクトリにsample.png
を置いて、それを表示させるプログラムです。
表示されましたか?
import cv2
import numbers as np
src = cv2.imread('sample.png')
cv2.imshow('test', src)
cv2.waitKey(0)
$ pipenv shell # すでに仮想環境中に入っているなら不要
$ python test.py