OpenCVをインストールしてXCodeで使う方法

macbook

 Xcode v4.5.1でOpenCVを使う方法を解説します。Xcodeはインストール済みであると仮定して話を進めます。

MacPortsのインストール

インストールにはMacPortsを使います。MacPortsをインストールしてください。右上にDownloadボタンがあるので選択します。

「Mountain lion」「lion」「Snow Leopard」とあるので、お使いのMacOSにしたがって選択してください。ちなみに私は「Mountain lion」だったのでこちらをダウンロードしました。

あとは指示にしたがってインストールしましょう。

Command Line Tool for Xcodeをインストール

MacPortsでOpenCVをインストールすればいいのですが、今のままではエラーがでます。そこで、「Command Line Tool for Xcode」をインストールします。まず、Xcodeを起動させてください。そして、左上のメニューの

XCode->Open Developer Tool->More Developer Tools…

を選択します。すると登録画面がでるので登録します。以下の様な画面になるので、「Command Line Tool」で検索して、自分のMacにあったCommand Line Toolをダウンロードしてインストールします。

OpenCVのインストール

ではOpenCVをインストールします。ターミナルを起動させます。アプリケーションのユーティリティーにあると思います。

とりあえず

$ sudo port selfupdate

と入力してエンターを押してMacPortsをアップデートします。次に、

$ sudo port install opencv

でOpenCVをインストールします。結構、長くかかるので(一時間くらい!?)インストールできるまで待ちましょう。これでOpenCVのインストールは完了です。どこにインストールされたかというと、

/opt/local/include

にopnecvとopencv2というファイルがあります。調べる際は、Finderのメニューにある「移動->フォルダへ移動」から「/opt」と選択すれば「opt」へ移動できます。あとは普通にlocal->includeと進んでください。あと、

/opt/local/lib

に「libopencv_…」と多くのdylibファイルがあります。

OpenCVをXcodeで使ってみる

 せっかくOpenCVをインストールしたので使ってみましょう。では、Xcodeを起動して、Application->Command Line Tool->Nextを選択します。

そして、適当な名前をプロジェクトにつけましょう。はじめに以下のようにしてHeader Search Pathsに/opt/local/includeと設定します。

これでopencvのヘッダーファイルを読み込む際に設定したパスから入力すればよくなります。次に、ライブラリのパスを設定します。Build PhasesにあるLink Binary With Librariesに/opt/local/libにある

  1. libopencv_imgproc2.4.2.dylib
  2. libopencv_highgui.2.4.2.dylib
  3. libopencv_core.2.4.2.dylib

を加えます。「+」を押したあとにAdd Otherを選択して検索でファイル名を入力すればすぐにでます。

これで準備完了です。あとは、main.cにプログラムを書いていきます。今回は、1秒間ウインドウを出して終わるというプログラムを書きます。

#include <stdio.h>
#include "opencv/cv.h"       //cv.hを読み込む
#include "opencv/highgui.h"  //highgui.hを読み込む<br /><br />int main(int argc, const char * argv[])
{
    // insert code here...
    cvNamedWindow("window",1); //windowという名のウインドウを開く
    cvWaitKey(1000);           //1000msec=1sec待つ
    cvDestroyWindow("window"); //windowを閉じる
    return 0;
}

実行してみてください。左上に一秒間ウインドウらしきものが現れて消えます。

著者:安井 真人(やすい まさと)