OpenCV 3.0 Python ガイド

導入と概要

このドキュメントには 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 を追加することを許可して、コマンドプロンプトから pythonpip を実行できるようにすることをお勧めします。

モジュール依存のインストール

Python OpenCV cv2 モジュールには NumPySciPy スタックが必要とされます。 これを得るには、まず、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 numpyimport 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 に不足しているコーデックのエントリを追加し、WNVWNV1 にリネームして、それらを手動で宣言することができます。 OpenCV GitHub プロジェクトからこのコミットを見ることで、どのような変更が必要かを確認できます。

ファイルが更新されたら、build/ フォルダーから make を再度呼び出すことができ、OpenCV はエラーなしにコンパイルを完了するはずです。

コメントを残す

メールアドレスが公開されることはありません。