今日も微速転進

ここではないどこかへ

Python とビルド済みのOpenCVバイナリパッケージ


スポンサーリンク

ビルド済みのOpenCVバイナリパッケージについてメモ書き。 あくまでもPython向けにOpenCV 3.xをインストールする方法の1つです。

macOSPython本体を使う場合の一番ズボラな方式。

非力なマシンに最適。

背景

そもそもOpenCVソースコード自体にPython用のバインディングは含まれています。ただソースからビルドするか、OpenCVのバイナリをインストール後に必要なファイルを所定の場所にコピー((すればPythonからOpenCVを使用できます。

この場合の難点はOpenCVのビルド時に検出されたPythonバージョンでしか使用できないという問題があります。

環境によっては有効化されていないモジュールがある可能性がありますがそこまでは調査していません。あしからず。

前提

github.com

前提条件は次のとおり。

この記事を書いている時点で最新版は3.4.2.17。バージョン番号はOpenCVバージョンに対応します。

現時点でOpenCVの最新版は3.4.3。このライブラリ(というかビルド済みバイナリ)は3.4.2に対応しています。

PythonバージョンとCPUアーキテクチャ別のビルド済みパッケージというのがこの記事で紹介しているPythonモジュール。

あくまでも非公式パッケージです。

メリット

このパッケージのメリットは導入が楽な点。特に別途OpenCVのインストールが不要。

デメリット

デメリットはパッケージをインストールするたびにOpenCV一式をインストールするのでディスク容量を消費する点。

ある程度汎用的な環境向けにビルドされているのであまり最適化はされていない。新しいバージョンがリリースされてから若干のタイムラグがある点にも注意が必要です。

なお、インストールに成功したからと言って動作するとは限らず、追加で依存しているライブラリのインストールが必要な場合があります。

パッケージ名

本体のみとcontribあり、GUI関連機能(highuiモジュール)ありとなしで合計4つのパッケージがある。

以下の4つのパッケージのうちどれか1つを選んでインストールする。

本体のみ

headlessの方はGUI関連機能を無効にしたパッケージ。サーバー環境向け。

contribあり

opencv_contribリポジトリを組み合わせてビルドしたパッケージ。headlessについては本体のみのパッケージと同じ。

Linux環境でcontribつきのパッケージの利用は不要な機能のための依存パッケージをインストールする必要があるので逆に面倒な可能性があります。

インストール時の注意

環境によっては追加のパッケージをインストールする必要があります。エラーメッセージから該当のファイルを含むパッケージを特定してインストールします。

macOSの場合はHomebrewでopencvパッケージが依存しているパッケージ一式をインストールすればOpenCV本体は動くはずです。具体的にはbrew info opencvを実行しRequired:という行に列挙されているパッケージのうち、python本体以外をインストール*1

参考:Raspbian Liteでビルド済みのOpenCVパッケージを使うための依存パッケージいろいろ

具体例

Python 3.7、opencv-pythonバージョンは3.4.2.17。

作業ディレクトリを作成。contribにある二値化処理アルゴリズムを試したいのでopencv-contrib-pythonをインストール。

$ mkdir work
$ cd work

pyenvなどを使う場合はこのタイミングで使用するPythonバージョンに切り替え。

venvモジュールで仮想環境を作成して有効化。

$ python3 -m venv venv
$ source venv/bin/activate

この状態でpipコマンドはpip3コマンドへのリンクになっています。

contribありのパッケージをインストールします。

$ pip install opencv-contrib-python-headless

大抵の場合はNumPyとmatplotlibも使うのでついでにインストール。

$ pip install numpy matplotlib

まとめ

他のインストール手段でインストールされるモジュール類とのconflictに注意。

こういう記事が意外なところで役に立つと思っていたりします。まあ気休めですけど。

おしまい。

詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識

詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識

*1:まあ楽ができればそれが正義

広告