OpenCV - 1.1pre

OpenCV 1.1pre用のメモ書き

  • 要調査
    new C++ template image classes contributed by Daniel Filip (Google inc.).
    see opencv/cxcore/include/cvwimage.h

インストール

Windows版だとビルドエラーが発生したため,Linux版をUbuntu8.10にインストールしました.
今のところ特に問題なく動作しています.

OpenCV (sourceforge.net) からopencv-1.1pre1.tar.gz をダウンロード.
これを適当なディレクトリに入れて展開しておきます.

$ tar zxvf opencv-1.1pre1.tar.gz
$ cd opencv-1.1.0

また,OpenCVのソースをmakeするのに必要なg++(gcc),libstdc++はあらかじめ入れておいてください.

以下RedHat系ディストリビューションの場合はapt-getからyumに読み変えてください.
まず画像処理に必要な以下に示すdev系のパッケージをインストールします.

$ sudo apt-get install libgtk2.0-dev  //画面描画(HighGUI用)
$ 同上                 libpng-dev     //pngフォーマットサポート
                       libjpeg-dev    //jpegフォーマットサポート
                       libtiff-dev    //tiffフォーマットサポート (必要ならば)
                       libavformat-dev //以下動画入出力サポート(ffmpeg)
                       libavutil-dev
                       libavcodec-dev
                       libswscale-dev
                       libdc1394-13-dev  //1394カメラサポート (必要ならば)

また,これらはパッケージはSynapticでも全てインストール可能です.

次に

$ ./configure

を実行. 以下のように表示されれば成功です.
libjpeg等がyesになっていることを確認してください.

# HighGUI configuration ================================================

Windowing system ―――――――
Use Carbon / Mac OS X:    no
Use gtk+ 2.x:             yes
Use gthread:              yes

Image I/O ―――――――
Use libjpeg:              yes
Use zlib:                 yes
Use libpng:               yes
Use libtiff:              yes
Use libjasper:            no
Use libIlmImf:            no

Video I/O ―――――――
Use QuickTime / Mac OS X: no
Use xine:                 no
Use ffmpeg:               yes
Use dc1394 & raw1394:     yes
Use v4l:                  yes
Use v4l2:                 yes

あとは

$ make
$ sudo make install

でインストールできます. (マシンの性能によってはmakeに数分~十数分かかります)

動作確認

pkg-configのパスを通しておきます.
(pkg-configはヘッダファイル,ライブラリ等のコンパイル時のリンクを簡略化するためのツール)
シェル(bash)の設定ファイル(~/.bashrc)に以下を追記

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:$PKG_CONFIG_PATH

次にOpenCV付属のサンプルで動作確認します.

$ cd /usr/local/share/opencv/samples/c
$ sudo chmod u+x build_all.sh
$ ./build_all.sh
$ ./edge

エッジ検出のデモが実行されれば成功です.
(ちなみにfind_objというのがSURFのデモです)

コンパイル・実行

  • foo.cppをコンパイル・実行 (Cの場合はg++をgccで読み変えてください)
$ g++ -o foo foo.cpp `pkg-config --cflags --libs opencv`
$ ./foo

コンパイルする度に長いオプションを打つのはツラいと思うのでMakefileを作っておきましょう.

  • Makefileの例 (オプション等は便宜追加してください)
    CXX = g++
    CXXFLAGS = `pkg-config --cflags opencv`
    LDFLAGS = `pkg-config --libs opencv`
    TARGET = $@
    SOURCE = $@.cpp
    
    TARGET:
    	$(CXX) -o $(TARGET) $(SOURCE) $(CXXFLAGS) $(LDFLAGS)
    
    .PHONY: clean
    clean:
    	rm -f *.o *~
  • コンパイル・実行
    $ make foo
    $ ./foo

お疲れ様でした.