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

OpenCVをホームディレクトリ以下にインストールする -Mac OS X Lion編-

環境

  • Mac OS X 10.7 Lion
  • OpenCV 2.3.1
  • gcc version 4.2.1 (LLVM build 2335.15.00)
  • homebrew 0.8

手順

1. まずは依存ライブラリやツールをインストール
Xcodeをインストールしたりhomebrewをインストールしたりするのは済んでいる前提で。

homebrewを使って依存ライブラリ等をインストールします。今回はGtk+ではなく、Qtにしました。

$ brew install cmake
$ brew install pkg-config
$ brew install libtiff
$ brew install jasper
$ brew install tbb
$ brew install ffmpeg
$ brew install qt


2. OpenCVをダウンロードして解凍
http://sourceforge.net/projects/opencvlibrary/ からソースコードをダウンロードします。
前回と同じく、Unix版のOpenCV 2.3.1を使用しました。
ダウンロードしたファイルは、

$ tar xvf OpenCV-2.3.1.tar.bz2

で解凍しておきます。


2. CMAKE_INSTALL_PREFIXにインストールするパスを指定してcmake
OpenCVをインストールする場所をCMAKE_INSTALL_PREFIXで指定してcmakeを実行します。
前回と同じく、インストールする場所は

$HOME/local/opencvlibrary

です。
下記のようにオプションを指定し、cmakeを実行します。

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=$HOME/local/opencvlibrary \
 -D BUILD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_QT=ON \
 ./OpenCV-2.3.1

他のディレクトリにインストールする場合は、$HOME/local/opencvlibraryの部分を適宜読み替えてください。


3. ビルドしてインストール
そのまんまです。

$ make
$ make install


4. パスの設定
ビルド時にライブラリを見つけられるようにするため、

  • ビルド時に使用する pkg-config のパス (PKG_CONFIG_PATH)
  • 共有ライブラリのパス (DYLD_FALLBACK_LIBRARY_PATH)

の2つを設定します。
PKG_CONFIG_PATH には opencv.pc が配置されているディレクトリ([OpenCVをインストールしたディレクトリ]/lib/pkgconfig)、 DYLD_FALLBACK_LIBRARY_PATH は共有ライブラリが配置されているディレクトリ([OpenCVをインストールしたディレクトリ]/lib)を指定すればOKです。
今回はそれぞれ $HOME/local/opencvlibrary/lib/pkgconfig 、$HOME/local/opencvlibrary/lib となるので、.zshrcなどに下記のように設定を記述します。

# .zshrcに追記
PKG_CONFIG_PATH=$HOME/local/opencvlibrary/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH
DYLD_FALLBACK_LIBRARY_PATH=$HOME/local/opencvlibrary/lib:$DYLD_FALLBACK_LIBRARY_PATH
export DYLD_FALLBACK_LIBRARY_PATH

最後に、シェルを再起動するか

$ source ~/.zshrc

で設定ファイルを再読込みすれば完了です。


5. 動作確認
OpenCVのサンプルコードの find_obj.cpp で動作確認をしてみます。

$ cd OpenCV-2.3.1/samples/c/
$ g++ find_obj.cpp -o find_obj `pkg-config --libs --cflags opencv`
$ ./find_obj

のようにコマンドを実行すれば、正常に動くはずです。

まとめ

以上、Mac OS X LionでOpenCVをホームディレクトリ以下にインストールする手順でした。