windows7 64bit環境でのpython, opencvセットアップ等
かなり久しぶりの記事になってしまいました。
windows7 64bitで環境構築にずいぶん手間取ったのでいくつかのポイントをメモしておきます。
目標は、64bit版のpythonやopencv(含むpythonバインディング)あたりが普通に使えるようになることです。
pythonのインストール
python自体のインストールは公式サイトから配布されているインストーラを使えばできるはずです。
インストールしたらPYTHON_HOME環境変数にpython.exeがあるディレクトリを設定し、PATHに%PYTHON_HOME%を追加しておきます。
easy_install(setuptools)のインストール
pyhonのパッケージ管理システムにはeasy_installとpipがありますが、pipを入れるのにeasy_installがあった方がよいのでまずインストールします。これも公式の指示に従えばOKですが、サイトに書いてある通り、64bitの場合はインストーラがないのでez_setup.pyをダウンロードして実行することでインストールします。
easy_installは%PYTHON_HOME%/Scripts以下にインストールされるはずなので、ここにもPATHを通しておきます。
pipのインストール
easy_install pip
でOK
numpy, scipyのインストール
これらが少々面倒です。計算をするならnumpy, scipyは入れておきたいですが、一筋縄ではいかなくなります。
まず、
pip install numpy
とすると、いくつかエラーが出るはずで、その内容は
というものになるはずです。BLAS/ATLAS, Lapackを64bit環境でビルドする必要がありますが、そのためにはfortranコンパイラが必要で、ではMSYSやCygwinで64bitに対応してビルドするにはどうするか…という面倒な問題になります。また、vcvarsall.batはVisualStudio2008(EEでよい)が必要で、2010だけではビルドできません。(参考)
こういった面倒な状況に対応してくれている素晴らしいサイト(gohlke)があります。ここではpython関連の各種パッケージを32bit,64bitそれぞれのwindows向けにビルドしたインストーラを配布してくれています。numpyやscipyもあるので、これを利用するのがおそらく最も確実です。
さらに、ここで配布されているnumpyはIntel MKLでビルドしたもの(そうでないものもありますが、ここのscipyバイナリのインストールにはMKL版numpyが必要)なので、計算速度の観点からも是非これを使うべきと言えます。
matplotlibのインストール
綺麗なグラフを書きたいとなると必要なんですが、これがまた超頻出のハマリパターンがあるようで、しっかりハマると思われます。
pip install matplotlib
とすると、(VS2008がなければ)先ほどと同じ「vcvarsall.batがない」というエラーが起こり、あったとしてもmatplotlib.ft2font関連でエラーが起こると思われます。これについては"matplotlib ft2font"などでググると大量の事例が見つかり、freetype2フォントを別にインストールすることで何とかなったりもするようですが、freetype2フォント自体はwindows向けのバイナリが公開されておらず、自前の64bit環境でビルドする必要があります。
これについても、パッケージ管理システムを使うのはさっさと諦めて(ただしeasy_installを使うとうまくいくかもしれません。その場合もvcvarsall.batは必要)、公式のインストーラを使うのが早いと思います。
OpenCVのインストール
ここでpythonから一旦離れて、OpenCVを64bit環境にインストールします。以下の説明は基本的に公式のインストールガイドの通りです。
cmakeのインストール
64bit版のOpenCVは自前でビルドする必要があり、環境に合わせてVisualStudioのプロジェクトファイル(またはMakefile)を生成するためにcmakeを用いる必要があります。というわけで、まずは公式からcmakeのインストーラを落としてきてインストールします(cmake自体は32bit版しかない)。インストーラにcmake.exeの場所へPATHを通すか聞かれるので、通しておくと良いです。
OpenCVのインストール
cmakeをインストールしたら、ビルドするOpenCVのソースをこの辺りから落としてきます。通常は最新版を落とします。OpenCV-2.4.1.exeなどのファイルがそれで、自己解凍形式になっているので適当な場所へ解凍します。
解凍したらcmake guiを起動し、Where is the source code:に解凍してできたディレクトリ(CMakeLists.txtがあるディレクトリ)、Where to build the binaries:にその直下のbuildディレクトリを指定してConfigureを押します。するとgenerator(コンパイル環境)を聞かれるので、VisualStudio10 Win64(VisualStudio2010を使っているなら)を指定します。
VisualStudioがExpress Editionの場合、64bitプロジェクトをビルドするのに若干の設定がいる場合があります。基本的にはVisualStudioとは別にWindows SDK 7.1をインストールすればOKですが、VisualC++の修正とWindows SDKの相性が悪くインストールできない場合があり、その場合はこの記事の内容に従う必要があります。
無事configureが終わるとビルド設定の画面が出てきますが、opencv.jpあたりの記事を参考に、自分の環境に合わせてせっていします。ここで、tbb、Eigenあたりをインストールしておくとよいと思います。特にtbbは簡単な(C++)テストプログラムを試す際にも要求されることがあるようです。tbbは適当な場所に解凍し、tbb40\bin\intel64\vc10あたり(dllファイルのある場所)、tbb40\include\tbbあたり(ヘッダファイルのある場所)にPATHを通します。また、Eigenはテンプレートライブラリなので、(C++であれば)必要なときにヘッダファイルを読み込むだけで利用できます。解凍したディレクトリにPATHを通します(PATHを通したディレクトリ\Eigen以下に.hなしのヘッダファイルがあります)。
また、cuda込みのビルドは手元ではどうにもうまく行っていません…(こういう感じの問題が起こる)。
ビルドされたライブラリとヘッダファイルのディレクトリにパスを通し、VisualStudioで(例によって)追加ライブラリにopencv_core241.lib, opencv_highgui241.lib, opencv_imgproc21.libあたりを追加して適当なテストプログラムがビルドできればとりあえず完了です。