AnacondaにOpenCV2をインストールする

以前 OpenCV2 を導入するのに公式の方法ではうまくいかず,意外と右往左往してしまった話です.

環境

Windows で Anaconda3 を使っていますが,仮想環境の Python2 系に合わせて OpenCV2 を導入します.

OpenCV3 は conda install でいけますが,OpenCV2 は opencv.org からダウンロードしなければなりません.

公式のインストール方法

  1. OpenCV for Windows でパッケージをダウンロードし,好きな位置で展開する
  2. Downloads\opencv\build\python\2.7\x64 (32bit の場合は x86) を開き,中の cv2.pyd をコピー (Download フォルダ内で展開したときの話)
  3. Anaconda3\Lib\site-packages の中に貼りつける (Anaconda のフォルダの場所は個人の環境によりけり)

これが,公式上の案内です.

読み込み時のエラー

しかし,これで実行するとエラーになります.

ImportError: No module named 'cv2'

仮想環境ではパッケージが適用できていません.

また,仮想環境上でない場合は次のようなエラーが出ます.

ImportError: DLL load failed: 指定されたモジュールが見つかりません.

これは Anaconda3 はデフォルトで Python3 系なので,OpenCV 2.4 が適用できないのかなと.

仮想環境上で利用する

Anaconda を利用した仮想環境では,(当然)仮想環境ごとにパッケージを導入したりしなかったり選べます.

ということは,仮想環境ごとに分けて保存しているはずで,Anaconda3\Lib\site-packages の中に適用したところで,各仮想環境上では利用できなくない?

ということに最初気づかなかったのですが...

先ほどと同様に手動でパッケージを導入するので,最初に仮想環境を用意します.

terminal
$ conda create -n cv python=2.7.12

今回は,余計なパッケージは何も入っていない,まっさらな状態の環境でやってみます.

仮想環境の設定は Anaconda3\envs 内に保存されています.

仮想環境においてもディレクトリの構造は同じようなので,Anaconda3\envs\cv\Lib\site-packages の下に cv2.pyd をコピーすれば OK !

Numpy を忘れずに

これで OpenCV をインポートしようとすると,またエラーが出ます.

ImportError: numpy.core.multiarray failed to import

OpenCV は Numpy 必須です.

terminal
$ pip install numpy

気を取り直して,仮想環境にパッケージを追加して,再び実行します.

terminal
>>> import cv2
>>> print cv2.__version__
2.4.13

これで万事解決!