Rob Hess氏によるSIFTの実装をOSX SnowLeopardにインストール.
09 15, 2011
Rob Hess氏の実装したSIFT特徴のライブラリをOSXにインストールするのに格闘したのでメモ.
環境:MacOSX 10.6.7 Core2Duo
(2012/1/15 追記: 10.7.2でも同様の方法でインストール確認できました)
まず上記のリンクのDownloadからlinux向けの「sift-latest.tar.gz」をダウンロード.
しかるべきところに解凍します.
READMEに従ってOpenCVとGTK+2を入れる.
といってもOpenCVは既に入れてあるので,GTK+2だけをインストール.
(2012/1/15 追記: doxygenも必要になるので入れておきましょう.)
ここでまずlibtiffとかlibjpgとかが無いと言われてエラー.あるのに.
よくわからないが一旦それらをアンインストールしてもう一度入れ直したら治った.
というわけで,環境が整ったのでSIFTのビルドに臨む.
先ほど解凍したフォルダ(多分「sift」という名前)に移動し,そこでmake,
すると何やら色々とエラー.
まず,homebrewで入れたgtk+は,pkg-config用のメタデータファイル(*.pc)の名前が異なっているので,MakeFIleを修正.先ほど解凍したsiftフォルダにある「src」フォルダに移動し,そこのMakeFileを開いて,6,7行目を
と修正.
siftフォルダに戻ってmake clean,再度makeすると,
というエラー.どうやら僕が以前homebrewから入れたOpenCVは32bitだったらしく,そこで問題が起きた模様.というわけでMakeFileのCFLAGSに-m32と書いて回避・・・となればよかったのですが,なんと今しがた入れたgtk+は64bit版だった(?)らしく,今度は
という逆の内容のエラー!これは詰んだ.
ここで,gtk+は今せっかく入れたので,ここはひとつOpenCVを64bit化してしまおうと思い立つ.
調べてみると,OpenCV本家に「32bit版が欲しければ『sudo brew install opencv --build32』しろ」と書かれていたので,じゃあ逆に64bitが欲しければ--build64かということで,
とやってみたら本当に入った.
そして再びmake.
おお,finish!無事成功!
成功しているか確かめるために,

やったー!
・・・と思ったのも束の間,今度は自作のOpenCVプログラムがコンパイルできなくなる.
64bit版を入れ直したせいだとは思うが,そもそもこのMacは64bitマシンのはずだし・・・
と悩んでいたが,ふと「Snow Leopardは普通に起動すると32ビットモードで起動する」という事を思い出す.
ということでこれを機に常に64ビットモードで起動するようにする.
具体的には,再起動して画面が黒いうちに数字の「6」「4」キーを押し続ける.
うおーー!!!!
動きはええーー!!!
うおーコンパイルもできたぞー!!!
うおー5時だー!!!!寝るーーー!!!
(2012/1/15 追記: このあとマジでゼミに大遅刻したのはいい思い出です.)
環境:MacOSX 10.6.7 Core2Duo
(2012/1/15 追記: 10.7.2でも同様の方法でインストール確認できました)
まず上記のリンクのDownloadからlinux向けの「sift-latest.tar.gz」をダウンロード.
しかるべきところに解凍します.
READMEに従ってOpenCVとGTK+2を入れる.
といってもOpenCVは既に入れてあるので,GTK+2だけをインストール.
(2012/1/15 追記: doxygenも必要になるので入れておきましょう.)
$ brew install gtk+
$ brew install doxygen
ここでまずlibtiffとかlibjpgとかが無いと言われてエラー.あるのに.
よくわからないが一旦それらをアンインストールしてもう一度入れ直したら治った.
というわけで,環境が整ったのでSIFTのビルドに臨む.
先ほど解凍したフォルダ(多分「sift」という名前)に移動し,そこでmake,
すると何やら色々とエラー.
まず,homebrewで入れたgtk+は,pkg-config用のメタデータファイル(*.pc)の名前が異なっているので,MakeFIleを修正.先ほど解凍したsiftフォルダにある「src」フォルダに移動し,そこのMakeFileを開いて,6,7行目を
INCL = -I$(INC_DIR) `pkg-config --cflags opencv gtk+-2.0`
LIBS = -L$(LIB_DIR) -lfeat `pkg-config --libs opencv gtk+-2.0`
と修正.
siftフォルダに戻ってmake clean,再度makeすると,
ld: warning: in (色々), file was built for i386 which is not the architecture being linked (x86_64)
というエラー.どうやら僕が以前homebrewから入れたOpenCVは32bitだったらしく,そこで問題が起きた模様.というわけでMakeFileのCFLAGSに-m32と書いて回避・・・となればよかったのですが,なんと今しがた入れたgtk+は64bit版だった(?)らしく,今度は
ld: warning: in (色々), file was built for unsupported file format which is not the architecture being linked (i386)
という逆の内容のエラー!これは詰んだ.
ここで,gtk+は今せっかく入れたので,ここはひとつOpenCVを64bit化してしまおうと思い立つ.
調べてみると,OpenCV本家に「32bit版が欲しければ『sudo brew install opencv --build32』しろ」と書かれていたので,じゃあ逆に64bitが欲しければ--build64かということで,
sudo brew uninstall opencv
sudo brew install opencv --build64
とやってみたら本当に入った.
そして再びmake.
おお,finish!無事成功!
成功しているか確かめるために,
を実行してみる../bin/match beaver.png beaver_xform.png

やったー!
・・・と思ったのも束の間,今度は自作のOpenCVプログラムがコンパイルできなくなる.
64bit版を入れ直したせいだとは思うが,そもそもこのMacは64bitマシンのはずだし・・・
と悩んでいたが,ふと「Snow Leopardは普通に起動すると32ビットモードで起動する」という事を思い出す.
ということでこれを機に常に64ビットモードで起動するようにする.
具体的には,再起動して画面が黒いうちに数字の「6」「4」キーを押し続ける.
うおーー!!!!
動きはええーー!!!
うおーコンパイルもできたぞー!!!
うおー5時だー!!!!寝るーーー!!!
(2012/1/15 追記: このあとマジでゼミに大遅刻したのはいい思い出です.)
スポンサーサイト