LionにopenCVをいれてみる

id:tamakiii:20091125 さんの記事を参考にしながらインストールしようとしたのですが、多少状況が違うようなのでメモ。

一番の違いは「MacPorts が不要っぽい」という点でしょうか。

  • /usr/bin/xcodebuild のパスが合わないので修正
    • Xcode4.3 から Xcode の場所が変わったのでそれに対応。
$ sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/
$ tar jxf OpenCV-2.3.1a.tar.bz2
$ mkdir OpenCV_build
$ cd OpenCV_build
  • cmake で設定
    • C++コンパイラを/usr/bin/c++から/usr/bin/g++へ変更
      • `No matching constructor for initialization of 'cvflann::LshIndexParams'` のようなエラーが出るのでこれを抑制。
      • これだけはGUI版のcmakeでは指定できませんでした。GUIからEntryを追加しても消されてしまうのです。
    • libjpeg, libpng, libtiff をOpenCV付属のものを利用するように変更
      • シンボル _png_set_gray_1_2_4_to_8 が無い旨のエラーになるのでこれを抑制。libpngのバージョンチェックに失敗している様です。
$ cmake -D CMAKE_CXX_COMPILER:FILE_PATH=/usr/bin/g++ -D OPENCV_BUILD_3RDPARTY_LIBS:BOOL=YES ../OpenCV-2.3.1
  • make && make install
$ make
$ sudo make install

動作確認

動作確認コード。

#include <cv.h>
#include <highgui.h>

using namespace cv;

int main(int argc, char* argv[])
{
    VideoCapture cap(0);
    if(!cap.isOpened()) {
        return -1;
    }

    namedWindow("sample", CV_WINDOW_AUTOSIZE);
    for(;;) {
        Mat frame;
        cap >> frame;
        imshow("sample", frame);
        if(waitKey(30)>=0) break;
    }
    return 0;
}

そしてコンパイルと実行。

$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
$ g++ -O3 -Wall -o sample sample.cpp `pkg-config --cflags --libs opencv`
$ ./sample

動きました\(゚∀゚)/

pkg-configメモ

これのために MacPorts が要る・・・のかな? 検証できてません。

$ pkg-config --cflags --libs opencv
 -I/usr/local/include/opencv -I/usr/local/include \ 
 -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui \
 -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d \
 -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann