導入と概要
このドキュメントには OpenCV の最新リリース(バージョン 3)と Python バインディングへのインストールと移行に関する説明が含まれています。 いくつかの API の変更に加え、Python のインターフェースにも変更があり(例えば cv2.cv
の削除)、新しいバージョンの cv2
モジュールで動作させるために既存のコードの変更が必要になる場合があります。
このページでは、Windows (ビルド済みバイナリを使用) と Linux (ソースからコンパイル) への OpenCV 3 のインストールと、Python インターフェース (cv2
モジュール) について説明します。 OpenCV は OpenCV の公式ウェブサイトからダウンロードできます。 このガイドは OpenCV バージョン 3.1.0 に基づいて書かれていることに注意してください. インストール後、Python が使用している OpenCV のバージョンを確認することをお勧めします。
import cv2print cv2.__version__# Should print 3.0.0-rc1 or newer.
Note that OpenCV 3 は最新のリリースですが、慣習上、モジュールはまだ cv2
という名前です。
Windowsへのインストール(ビルド済みバイナリ)
Windows で Python OpenCV 環境を構築する最も早い方法としてビルド済みバイナリが使用されます。 現在、cv2
モジュールの Python 2 バージョンのみがビルドされ、最新の Windows リリースに含まれています。 Python 3 のサポート (および他の非標準の機能/モジュールの追加) には、ソースからのコンパイルが必要です。
Downloading OpenCV and Python
まず、Windows 用 OpenCV (version 3.1, opencv-3.1.0.exe
) をダウンロードし、任意のディレクトリに解凍します。 Windows 版には、Python 2.7 用の 32 ビットと 64 ビットのモジュールが含まれています。
続行する前に、Python のウェブサイトからダウンロードできる、動作する Python 2.7 のインストールがあることを確認してください。 このガイドは Python 2.7.9 (x86 installer / x64 installer) を使用してテストされています。 インストール時には、インストーラが環境変数 PATH
に Python を追加することを許可して、コマンドプロンプトから python
と pip
を実行できるようにすることをお勧めします。
モジュール依存のインストール
Python OpenCV cv2
モジュールには NumPy
と SciPy
スタックが必要とされます。 これを得るには、まず、python
環境が動作していることと、pip
がインストールされていることを確認してください (そうでない場合は、上記のリンクを使用し、Python フォルダが PATH
変数にあることを確認してください)。
Christoph Gohlke は現在 NumPy や SciPy などいくつかの Windows 用ビルド済み Python パッケージを (unofficial) 提供しています。 最新の安定版の NumPy と SciPy をダウンロードし、コマンドプロンプトから pip install .whl
を呼び出してインストールしてください。 ただし、Pythonの環境(ここでは2.7)とワード長に対応したバージョンをダウンロードする必要があります。 例えば、32-bit システム/インタプリタの場合:
pip install numpy-1.9.2+mkl-cp27-none-win32.whlpip install scipy-0.15.1-cp27-none-win32.whl
そして 64-bit システム/インタプリタの場合:
pip install numpy-1.9.2+mkl-cp27-none-win_amd64.whlpip install scipy-0.15.1-cp27-none-win_amd64.whl
インストール後、Python インタプリタから import numpy
と import scipy
を実行し、モジュールが正しくインストールされたことを確認できるはずである。 NumPyとSciPyがどのバージョンでインストールされているかは、それぞれnumpy.__version__
とscipy.__version__
から確認できます。
Python-OpenCVモジュールのインストール
最後に、OpenCVモジュールをローカルPythonパッケージへコピーしておくことが必要です。 opencv-3.0.0-rc1.exe
から展開されたファイルの中の opencv\build\python.7\
フォルダに移動し、x86\
(32-bit) または x64\
(64-bit) フォルダを開いてください。
cv2.pyd
を直接 Python インストールの Lib\site-packages\
ディレクトリにコピーしてください。
C:\Python27\Lib\site-packages
最後に、OpenCV .dll ファイルがシステムの %PATH%
にあることを確認します。特に、ビデオファイルの読み込みに必要な opencv_ffmpeg310.dll
(64-bit システムでは opencv_ffmpeg310_64.dll
) ファイルを確認します。 また、次のページ「移行 & 変更点」で、モジュールへの変更と既存のコードの更新についての詳細を確認してください。
Linux へのインストール (ソースからのコンパイル)
このガイドは、Ubuntu 12.04/14.04 およびその他のバージョン (Xubuntu/Lubuntu/Kubuntu など) を対象に書かれていますが、他のバージョンや同様の Debian 系 Linux ディストリビューションでもプロセスはほぼ同じであると思います。 各コマンドの出力に注意して、すべてが正しく動作したことを確認し、ビルドプロセス中に何か問題がある場合は、可能な緩和策についてこの文書の最後を参照してください
Downloading OpenCV
まず、Linux 用 OpenCV (version 3.1.0, opencv-3.1.0.zip
) をダウンロードして、任意のディレクトリ (~/opencv-src
等) に解凍します。 アーカイブを展開したフォルダ(CMakeLists.txt
ファイルのあるディレクトリ)内にbuild
フォルダを作成し、そこで端末セッションを開きます。 例えば:
# Assuming the files were extracted to ~/opencv-src/...cd ~/opencv-srcmkdir buildcd build
以下のコマンドはすべて build
サブフォルダ自体から実行され、コンパイルされたファイルはそこに置かれます。
ビルド依存関係のインストール
OpenCV をコンパイルするには、ビルド ツール自身を含む必要な依存関係があることを確認しなければなりません。 Ubuntu では apt
を使用して必要なものを入手できますが、まず apt-get update
を実行してパッケージ・リストが最新であることを確認します。 次に、以下のコマンドを実行して、必要なパッケージを取得します (一行ですべてを表示するには、以下を参照してください):
sudo apt-get install cmake build-essential pkg-configsudo apt-get install libgtk2.0-dev libtbb-devsudo apt-get install python-dev python-numpy python-scipysudo apt-get install libjasper-dev libjpeg-dev libpng-dev libtiff-dev sudo apt-get install libavcodec-dev libavutil-dev libavformat-dev libswscale-devsudo apt-get install libdc1394-22-dev libv4l-dev
一行で:
sudo apt-get install cmake build-essential pkg-config libgtk2.0-dev libtbb-dev python-dev python-numpy python-scipy libjasper-dev libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libdc1394-22-dev libv4l-dev
なお、追加の OpenCV モジュール/機能 (GPU/CUDA サポートや Python 3 モジュールなど) の場合は、これらのライブラリ用の開発/SDK パッケージも個別にダウンロードする必要があることに注意してください。
Compiling and Installing OpenCV
必要なビルドの依存関係を得たので、cmake
(再び、作成した build/
ディレクトリ) を実行して OpenCV をビルドするための Makefile を生成します:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
何かエラーがあれば、すべての必須パッケージがダウンロードされたか確認してください – 出力は何が欠けているかを追跡するのに役立つでしょう。 Python モジュールを確実にビルドするには、cmake
を実行した後、設定されたモジュールのリストに python2
が表示されている必要があります:
-- Linker flags (Release):-- Linker flags (Debug):-- Precompiled headers: YES---- OpenCV modules:-- To be built: hal core flann imgproc ml python2
もし python2
モジュールが “To be built” リストに表示されない場合、正しい Python 開発パッケージをインストールし、build/
フォルダー内のファイルをすべて削除し、もう一度 cmake
コマンドを実行してみてください。
ここで、make
を使用して OpenCV (と Python モジュール) をビルドし、システムにインストールします。
makesudo make install
make
を呼び出してビルドが成功したことを確認し、インストール前に出力をチェックします。 ビルドの問題やエラーが発生した場合は、必要な依存関係やヘッダーファイルがすべてシステム上にあることを再度確認します。 OpenCV 自体に実際のビルドの問題がある場合、可能な回避策については、以下の Linux ビルドの問題セクションを参照してください。
Ubuntu 12.04 に OpenCV 3.0-rc1 をインストールする際、いくつかのコーデック #define
エントリーの欠落に関してビルドエラーに遭遇しました。 前述のように、同じ問題に遭遇した場合の対処法を以下に詳述します (この問題はバージョン 3.1.0 以降で解決されるはずです)。 Ubuntu 14.04 以上では、何の修正も必要なく正常にビルドできるはずです。
ビルドは成功したが、make install
を実行した後に Python シェルから import cv2
できない場合、先ほど build/lib/
フォルダで構築した cv2.so
ファイルを /usr/local/lib/python2.7/dist-packages/
にコピーすれば、モジュールを手動でインストールすることが可能です。
sudo cp lib/cv2.so /usr/local/lib/python2.7/dist-packages/
この手順で cv2
モジュールがインストールされ、Python 環境からインポートできるようになります。 続けて、インストールの確認セクションで、すべてが正しくインストールされたこと、さらに重要なこととして、正しいバージョンのOpenCVがPythonで使用されていることを確認します。 また、次のページ「移行 & 変更点」で、cv2
モジュールの変更点の詳細と、更新されたモジュールで実行するために既存のコードにどのような変更を加える必要があるかを確認することができます。
Verifying Installation
前述のように、Python シェルで以下を実行することにより、cv2
モジュールが正しくインストールされたかどうかを確認できます:
import cv2print cv2.__version__
正しいバージョンの文字列 (より最近のバージョンを使用している場合は 3.0.0-rc1
またはそれ以降) が表示されれば、現時点ではすべてが正しくインストールされています!
なお、cv2
モジュール階層自体に大きな変更があり、OpenCV 2.4.x を念頭に置いて書かれた Python プログラムは正しく動作しなくなる可能性があることに注意してください。 変更点の詳細や、変更点に対応するためのプログラムの修正方法については、次のセクション「移行 & 変更点」を参照してください。
Linux ビルドの問題
システムによっては、どのパッケージが利用可能かによって OpenCV 自体のコンパイル時に問題に遭遇することがあります。 適切なヘッダーファイルが利用可能であるにもかかわらず、ビルドの問題が発生する場合、以下の問題に対する回避策があるかどうか試してください。
Undefined AV_CODEC_ID_...
in ffmpeg_codecs.hpp
特定のコーデックが定義されていないことが原因でビルドエラーが発生する問題が発生した場合、ここからより最新バージョンの ffmpeg_codecs.hpp
をダウンロードし、ダウンロード/抽出したソース コード内の modules/videoio/src/
フォルダーで置き換えることが可能です。
あるいは、ffmpeg_codecs.hpp
ファイル自体を編集して、H263I
に不足しているコーデックのエントリを追加し、WNV
を WNV1
にリネームして、それらを手動で宣言することができます。 OpenCV GitHub プロジェクトからこのコミットを見ることで、どのような変更が必要かを確認できます。
ファイルが更新されたら、build/
フォルダーから make
を再度呼び出すことができ、OpenCV はエラーなしにコンパイルを完了するはずです。