LoginSignup
18
16

More than 5 years have passed since last update.

【2019年1月最新版】PythonによるOpenCVプロジェクトの始め方

Last updated at Posted at 2019-01-15

はじめに

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に設定します。

.bashrc
$ 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を置いて、それを表示させるプログラムです。
表示されましたか?

test.py
import cv2
import numbers as np

src = cv2.imread('sample.png')
cv2.imshow('test', src)
cv2.waitKey(0)
$ pipenv shell # すでに仮想環境中に入っているなら不要
$ python test.py
18
16
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
16