読者です 読者をやめる 読者になる 読者になる

意識の高いLISPマシン

藤原惟/すかいゆき(@sky_y)の技術用ブログ

CMakeを使ってOpenCVを楽にセットアップする方法 (for Visual Studio 2010)

Visual StudioOpenCVのプロジェクトを作るときに、いちいちインクルードディレクトリやライブラリを指定するのが面倒です。

CMakeを使って一度下準備をすれば、これらの設定を飛ばして楽にOpenCVプロジェクトを作成することが出来ます。

ここでは画像を表示するサンプルファイルを使って、CMakeで設定済みVisual Studioソリューションを生成する手順を紹介します。

手順

1. CMakeを使ってOpenCVをビルドする

まず、CMake公式サイトからCMakeをダウンロードし、インストールします。

次に、OpenCV公式サイトからOpenCVをダウンロードしてきて、CMakeを使いビルドします。

ビルドの手順は、下記のサイトに従って下さい。

Windows に OpenCV バージョン 2.4.5 をインストール

2. dllのディレクトリにパスを通す

環境変数PATHに下記のdllディレクトリを追加します。(ビルドした環境やバージョンによって微妙に違うかもしれないので、自分で確認して下さい。)

コントロールパネルのシステムから環境変数を開いてもいいのですが、個人的には Rapid Environment Editor をお勧めします。これを使うと、環境変数の編集が楽に出来ます。

3. CMakeLists.txtを書く

好きな場所にソースコードを置くディレクトリを作ります(例えばC:\myapp\SampleCMakeOpenCVなど)。

ここに、テキストエディタで下記のファイルを作成し、CMakeLists.txtと名付けます(ファイル名の綴りを要確認)。

# 下記の2つは自分の環境に合わせて書き換える
SET(OpenCV_DIR "C:/opencv/opencv/build") # OpenCVConfig.cmake があるディレクトリ
INCLUDE_DIRECTORIES("C:/opencv/opencv/build/include") # 上記ディレクトリの下のincludeディレクトリ

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT( SampleCMakeOpenCV )
FIND_PACKAGE( OpenCV REQUIRED )
ADD_EXECUTABLE( MyProject main.cpp )
TARGET_LINK_LIBRARIES( MyProject ${OpenCV_LIBS})

次に、 ここ からmain.cppをダウンロードして同じディレクトリに配置します。(自分でソースを書く場合にも、適当なC++ファイルを用意する必要があります。)

上記のmain.cppは適当なサンプル画像を必要とするので、ここからダウンロードして配置します。

4. CMakeを実行する

WindowsメニューのすべてのプログラムからCMakeを探し、「CMake (cmake-gui)」を実行します。

「Where is the source code」「Where to build the binaries」に同じもの(この例だとC:\myapp\SampleCMakeOpenCV)を入れます。バイナリの場所はお好みで指定しても構いません。

次に「Configure」を押します。Visual Studioの種類を聞かれたら、今回はVisual Studio 2010の64bit版なので「Visual Studio 10 64bit」を指定します。

エラーが出なければ「Generate」を押します。これで、同じディレクトリにソリューションファイル(SampleCMakeOpenCV.sln)ができているはずです。

5. Visual Studio 2010で実行する

ソリューションファイル(SampleCMakeOpenCV.sln)をダブルクリックします。

ソリューションの規定のスタートアッププロジェクトが「ALL_BUILD」になっていると思うので、プロジェクトMyProjectを右クリックして、「スタートアッププロジェクトに指定」をクリックします。

最後に、ビルドして実行します。上手くいけば、Lennaの絵が表示されるはず。

結局、何がうれしいのか?

最初は普通にプロジェクトを設定するのと同じぐらい面倒ですが、一度CMakeLists.txtを作ってしまえば、これを使い回しできます。

つまり、次回から新しいOpenCVプロジェクトを作成する際に、楽ができます。

OpenCV以外のライブラリでもCMakeの機能を使えば似たような手順で設定ができるので、ライブラリが増えれば増えるほどCMakeの恩恵が大きくなります。

ぜひ楽をするためにCMakeを使ってみてはいかがでしょうか。