以前 OpenCV2 を導入するのに公式の方法ではうまくいかず、意外と右往左往してしまった話です。
環境
Windows で Anaconda3 を使っていますが、仮想環境の Python2 系に合わせて OpenCV2 を導入します。
OpenCV3 は conda install でいけますが、OpenCV2 は opencv.org からダウンロードしなければなりません。
公式のインストール方法
- OpenCV for Windows でパッケージをダウンロードし、好きな位置で展開する
- Downloads\opencv\build\python\2.7\x64 (32bit の場合は x86) を開き、中の cv2.pyd をコピー (Download フォルダ内で展開したときの話)
- Anaconda3\Lib\site-packages の中に貼りつける (Anaconda のフォルダの場所は個人の環境によりけり)
これが、公式上の案内です。
読み込み時のエラー
しかし、これで実行するとエラーになります。
ImportError: No module named ‘cv2’
仮想環境ではパッケージが適用できていません。
また、仮想環境上でない場合は次のようなエラーが出ます。
ImportError: DLL load failed: 指定されたモジュールが見つかりません。
これは Anaconda3 はデフォルトで Python3 系なので、OpenCV 2.4 が適用できないのかなと。
仮想環境上で利用する
Anaconda を利用した仮想環境では、(当然)仮想環境ごとにパッケージを導入したりしなかったり選べます。
ということは、仮想環境ごとに分けて保存しているはずで、Anaconda3\Lib\site-packages の中に適用したところで、各仮想環境上では利用できなくない?
ということに最初気づかなかったのですが…
先ほどと同様に手動でパッケージを導入するので、最初に仮想環境を用意します。
1 |
$ 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 必須です。
1 |
$ pip install numpy |
気を取り直して、仮想環境にパッケージを追加して、再び実行します。
1 2 3 |
>>> import cv2 >>> print cv2.__version__ 2.4.13 |
これで万事解決!