LionでOpenCVをコマンドラインからコンパイル

前にOSX LionにMacPortsからインストールしたOpenCVをXCodeでコンパイル方法を書いたけど、コマンドラインからコンパイル方法を書いてなかったので書いておきます。

gcc -wall -g -o opencv_test main.c `pkg-config –cflags opencv` `pkg-config –libs opencv`

pkg-configについて

ヘッダファイルやライブラリをリンクするのに、ファイルパス指定をやってくれるのがpkg-configです。
pkg-config –cflags opencv:OpenCVのヘッダファイル指定
pkg-config –libs opencv:OpenCVのライブラリ指定

これはコマンド扱いなのでターミナルで叩くとファイルパスが見れます。
僕の環境だとこんな感じ。
・ヘッダファイルパス

pkg-config –cflags opencv -I /opt/local/include/opencv -I /opt/local/include

・ライブラリファイルパス

pkg-config –libs opencv -L/opt/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann

 
なので、次のように各オプションを指定すれば、pkg-configを使用した場合と同値になる。長いけど。。

gcc -wall -g -o opencv_test main.c -I/opt/local/include/opencv -I/opt/local/include -L/opt/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann

(補足)コンパイルオプション
 -o:実行ファイル名を指定
 -g:実行ファイルにデバッグ用の情報を埋め込む
 -Wall:warningをすべて表示
 -I:コンパイラがヘッダファイルを探すディレクトリを指定
 -L:コンパイラがライブラリを探すディレクトリを指定

ちなみにコンパイルコマンドは、/opt/local/share/OpenCV/samples/c配下に「build_all.sh」なるmakeファイルがあるのでそれを見ればわかるよ。

白黒と輪郭抽出のサンプルを置いたので試しに使ってください。

OSX LionにOpenCVを導入

MacPortsを使用してOSX LionにOpencvを導入したときの手順
【環境】
 MAC OSX Lion(10.7.2)
 Xcode 4.2.1

[1] Xcode をインストール
 AppStore で検索&クリック。

[2] MacPorts をダウンロード
 公式サイトから Lion 用のイメージ(青くなっているとこ)をダウンロード。

[3] MacPorts をインストール
 MacPorts-2.0.3-10.7-Lion.dmg がダウンロードされているので pkgをダブルクリックしてインストール開始。
 インストールが終わったら、念のためアップデートのためターミナルから以下のコマンドをドン。

$ sudo port selfupdate

[4] OpenCV をインストール
MacPorts を使用すればコマンドをドンと一発叩けば完了。時間はかなりかかるので辛抱強く待つ。

$ sudo port install opencv

これでOpencvのインストールは完了。

[5] Xcode のプロジェクト設定
 ① タブ「New」→「New Project」を選択
 ② 「MacOSX」の「Application」をクリックし「Command Line Tool」選択後「Next」をポチッ。
 ③ Project Nameを適当に決めてProjectを作成
 ④ Project軌道後に以下を変更
  ・ArchitecturesのValid Architecturesを「i386 x86_64」→「x86_64」
  ・Header Search Pathsを「/opt/local/include」
  ・プロジェクトに必要なライブラリパスを追加
   ”/opt/local/lib/libopencv_core.2.3.1.dylib”
   ”/opt/local/lib/libopencv_highgui.2.3.1.dylib”
   ”/opt/local/lib/libopencv_imgproc.2.3.1.dylib”

以上で設定はかんりょう。
コマンドラインからのコンパイル方法はまた今度。