MacOSXでMacPortsを使ったOpenCVのセットアップ方法(ついてにffmpegも)

#最新のMac OS X 10.6 Snow LeopardでOpenCV2.1をセットアップする方法をこちらに掲載しました.
#MacPortsで入れたPythonで使えるようにしてあります.


FinkからMacPortsに宗旨替えしたけど,MacPortsを用いたOpenCVのインストールで色々つまづいたのでメモ
というかOSXでOpenCVやる場合は直接的には関係ないんだけどffmpegの所でハマりまくった.

MacPortsはめちゃくちゃ便利でありがたいんだけど,たまに挙動不審だったりするのが玉に瑕.
でもそれ以外は満足して使ってます.

参考サイト
#1 Debian GNU/Linux 3.1 on PowerMac G4
  -1 ffmpeg
  -2 OpenCV
#2 聖アンドレアスの失敗
  -1 ffmpeg on MacOS X
#3 METAREAL
  -1 OpenCV 1.0.0 を Mac OS X 10.4 にインストール

今回の教訓:欲を出して色々入れようとすると痛い目を見る

--------------------------------------
###1 準備するもの
・MacPorts
これがないとこの記事に関しては何も出来ない.
セットアップ法に関してはこの記事を参考にしよう.
・OpenCVのソースファイル
2008/10/01の時点での最新版は1.0.0(長いことこのまんまだよね)
ココからソースファイルをダウンロードして,適当な場所に置いておこう.
・太らない程度の糖分とカルシウム
一回ハマるとかなり長期戦になるので,脳みそに糖分とカルシウムを補給しておきましょう

(以下の話はMacPortsがすでにセットアップ済みという前提で進めていきます)

###2 ffmpegをインストールしよう
後で気づいたけどffmpegってMacOSXのOpenCVには必須じゃないんだよね.
でもとりあえずインストールしてみよう.
まず必要なパッケージを表示します(太字のところが入力する所ね).

port search ffmpeg
ffmpeg multimedia/ffmpeg 0.4.9-pre1 Digital VCR and streaming server
port variants ffmpeg

ffmpeg has the variants:
universal
darwin_i386
mmx: enable mmx support, experimental; does not build in gcc-4.2 or xcode 3.0 gcc-4.0
gpl: allow use of GPL code, the resulting libav* and ffmpeg will be under GPL
postproc: enable GPLed postprocessing support
lame: enable MP3 encoding via libmp3lame
extvorbis: enable Vorbis encoding via libvorbis, native implementation exists
theora: enable Theora encoding via libtheora
faac: enable FAAC support via libfaac
faad: enable FAAD support via libfaad
xvid: enable Xvid encoding via xvidcore, native MPEG-4/Xvid encoder exists
x264: enable H.264 encoding via x264
a52: enable GPLed liba52 support
avfilter: video filter support (replaces vhook)

そうするとまぁ出るわ出るわ,必要なパッケージが大量に出てきます.
環境によって表示される内容が違うと思うけど,だいたいこんな感じのはず.
全部が全部必要な訳じゃないから,必要なものだけを入れればいいんだけど,人間やっぱり欲が出るもの.
欲を出して全部入れようとすると,インストールの段階でコケます(体験談).
解決法(?)は上の#2の記事に書いてあるとおり,

sudo port install ffmpeg +gpl +lame +extvorbis +faac +faad +xvid +x264 +a52

と入力するとうまくインストール出来るみたいです.
僕の個人的な印象だとavifilterでコケている感じがしました.
解決法っぽいことが書いてあるサイトも幾つかありましたが,正直そんな体力残ってなかったというか,あきらめました.
解決法見つけた方がいらっしゃったらコメントかメール頂けると助かりますm(_ _)m
まぁとりあえず先人が成功している構成が一番安全だよねってことで,インストール時の指定は上のをお薦めします.

結局諦めたのかとわらわば笑え.
正直言って数日試行錯誤した結果の結論がこれなんです.

とりあえずこれでffmpegのセットアップは終わったはず.
ターミナル上でffmpegと入力すると,色々オプションが表示されるはずです.



###3 OpenCVに必要なもの一式をインストール.
本当はMacPortsにOpenCVも入ってるんですが,何度やってもコケるので,とりあえず必要なものだけどインストールします.
僕は不安なんで前に書いた記事でインストールの際にFinkで入れたパッケージを片っ端から入れましたが.とりあえず参考にしたサイトによると以下のものだけで大丈夫みたいです.

sudo port install pkgconfig
sudo port install jpeg libpng tiff

とりあえず前準備はこれで完了.
あとはOpenCVのインストールです.


###4 ソースからOpenCVをインストールしませう
ここから先は前に書いたFinkの記事と殆ど同じですが,注意する点が1点.
私の環境限定かもしれませんが,インストールの際に--with-pythonのオプションをつける場合は,MacOSXのPythonはデフォルトのままにしておいてください
MacPythonなどでPyhonのバージョンを最新にしていた場合は,直接パスを指定しても私の環境ではインストール時にコケました.
どなたか解決法ご存じの方がいらっしゃいましたらコメントかメール頂けると助かりますm(_ _)m

さて,肝心のインストール方法ですが,まずOpenCVのソースファイルがあるディレクトリに移動して,tar.gzファイルを解凍して,そのフォルダに移動します.

cd /hoge
tar -zxvf opencv-1.0.0.tar.gz
cd opencv-1.0.0

まぁここまではセオリー通りです.解凍したフォルダに移動したら,ここからもセオリー通りに./configureなんですが,少しオプションが必要になります.

./configure --without-python --without-swig CPPFLAGS="-I/opt/local/include" LDFLAGS="-L/opt/local/lib"
make
sudo make install

と--without-pythonのオプションを入力して,OpenCVのPython版はインストールしないようにしてください.
これを--with-pythonとかでインストールすると,"_cv.la"とかいうところでエラーが出てしまいます.

上記の通りやっていけば多分無事インストールが出来るはず.
あとは環境変数の設定で

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

と入力.よく使う場合は.bashrcに書き込んでしまってもいいかも.
これでOpenCVの使用環境は整いました.

デモプログラムとかは

cd samples/c
sh build_all.sh

でコンパイル可能なはず.

色々遊んでみましょう.