OpenCV 1.0.0 で遊ぶ

怪しい認識も

なんとなく気になってたので OpenCV 遊んでみた
OpenCVMacOS X でも遊べるらしいので落としてきてビルドしてみた。ココから辿って落として来たのはココ1.0をダウンロード。
インストール方法はココで確認。事前に入れるものがあれこれあるのね。Mac で必要なのはとりあえず pkgconfig, tiff/jpg/png のライブラリ。まずはそっちを MacPorts で先に入れる。

macBook:~ paraches$ sudo port install pkgconfig
--->  Fetching pkgconfig
--->  Attempting to fetch pkg-config-0.21.tar.gz from http://mirror.opensysadmin.com/pkg-config/
--->  Verifying checksum(s) for pkgconfig
--->  Extracting pkgconfig
--->  Configuring pkgconfig
--->  Building pkgconfig with target all
--->  Staging pkgconfig into destroot
--->  Installing pkgconfig 0.21_0
--->  Activating pkgconfig 0.21_0
--->  Cleaning pkgconfig
macBook:~ paraches$ sudo port install jpeg libpng tiff
--->  Fetching jpeg
--->  Attempting to fetch jpegsrc.v6b.tar.gz from http://www.ijg.org/files
--->  Verifying checksum(s) for jpeg
--->  Extracting jpeg
--->  Applying patches to jpeg
--->  Configuring jpeg
--->  Building jpeg with target all
--->  Staging jpeg into destroot
--->  Installing jpeg 6b_1
--->  Activating jpeg 6b_1
--->  Cleaning jpeg
--->  Fetching libpng
--->  Attempting to fetch libpng-1.2.18.tar.bz2 from http://downloads.sourceforge.net/libpng
--->  Verifying checksum(s) for libpng
--->  Extracting libpng
--->  Configuring libpng
--->  Building libpng with target all
--->  Staging libpng into destroot
--->  Installing libpng 1.2.18_0+darwin_8
--->  Activating libpng 1.2.18_0+darwin_8
--->  Cleaning libpng
--->  Fetching tiff
--->  Attempting to fetch tiff-3.8.2.tar.gz from ftp://ftp.remotesensing.org/pub/libtiff/
--->  Verifying checksum(s) for tiff
--->  Extracting tiff
--->  Configuring tiff
--->  Building tiff with target all
--->  Staging tiff into destroot
--->  Installing tiff 3.8.2_0+darwin_8
--->  Activating tiff 3.8.2_0+darwin_8
--->  Cleaning tiff
macBook:~ paraches$ cd myTest/

どれもさっくりインストール終了。
次はダウンロードした OpenCV のインストール。まずはダウンロードしたファイルを展開。

macBook:~/myTest paraches$ tar zxvf opencv-1.0.0.tar.gz 
opencv-1.0.0/
<省略>
opencv-1.0.0/utils/unix2dos.py
macBook:~/myTest paraches$ cd opencv-1.0.0
macBook:~/myTest/opencv-1.0.0 paraches$ ls
AUTHORS         NEWS            autotools       cxcore          opencv.spec.in
COPYING         README          configure       data            otherlibs
ChangeLog       THANKS          configure.in    docs            samples
INSTALL         TODO            cv              interfaces      tests
Makefile.am     aclocal.m4      cvaux           ml              utils
Makefile.in     apps            cvconfig.h.in   opencv.pc.in
macBook:~/myTest/opencv-1.0.0 paraches$

次に ./configure で設定。ここで prefix を MacPorts の include と lib にしておく。--with-pythonpython で遊びたい時に入れておく。

macBook:~/myTest/opencv-1.0.0 paraches$ ./configure --with-python CPPFLAGS="-I/opt/local/include" LDFLAGS="-L/opt/local/lib"
checking build system type... i386-apple-darwin8.9.1
<省略>
General configuration ================================================
    Compiler:                 g++
    CXXFLAGS:                 -Wall -fno-rtti -pipe -O3 -g -march=prescott -ffast-math -fomit-frame-pointer 

    Install path:             /usr/local

HighGUI configuration ================================================

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

    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: yes
    Use xine:                 no
    Use ffmpeg:               no
    Use dc1394 & raw1394:     no
    Use v4l:                  no
    Use v4l2:                 no

Wrappers for other languages =========================================
    SWIG                      
    Python                    yes

Additional build settings ============================================
    Build demo apps           yes

Now run make ...

macBook:~/myTest/opencv-1.0.0 paraches$ 

ん? 最後のまとめのところの Video I/O、ffmpeg が no だな〜。インストールはされているんだけどな…。ま、Video I/O は QuickTime でやってくれるから良いけど。
無事に ./configure も済んだので次は make。

macBook:~/myTest/opencv-1.0.0 paraches$ make
make  all-recursive
Making all in cxcore
Making all in src
<省略>
macBook:~/myTest/opencv-1.0.0 paraches$ 

これもサクっと終了。順調、順調。
最後に make install。

macBook:~/myTest/opencv-1.0.0 paraches$ sudo make install 
Making install in cxcore
Making install in src
test -z "/usr/local/lib" || /bin/sh ../../autotools/mkinstalldirs "/usr/local/lib"
<省略>
test -z "/usr/local/include/opencv" || /bin/sh ./autotools/mkinstalldirs "/usr/local/include/opencv"
test -z "/usr/local/lib/pkgconfig" || /bin/sh ./autotools/mkinstalldirs "/usr/local/lib/pkgconfig"
mkdir /usr/local/lib/pkgconfig
 /usr/bin/install -c -m 644 'opencv.pc' '/usr/local/lib/pkgconfig/opencv.pc'
macBook:~/myTest/opencv-1.0.0 paraches$ 

OpenCV のインストールはひとまず完了。
で、今度は遊んでみるのにサンプルをコンパイルしてみる。いっぺんに全部コンパイルできると楽チン。

macBook:~/myTest/opencv-1.0.0 paraches$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
macBook:~/myTest/opencv-1.0.0 paraches$ cd samples/c
macBook:~/myTest/opencv-1.0.0/samples/c paraches$ sh build_all.sh 
compiling camshiftdemo.c
compiling contours.c
compiling convert_cascade.c
compiling convexhull.c
compiling delaunay.c
compiling demhist.c
compiling dft.c
compiling distrans.c
compiling drawing.c
compiling edge.c
compiling facedetect.c
compiling ffilldemo.c
compiling fitellipse.c
compiling houghlines.c
compiling kalman.c
compiling kmeans.c
compiling laplace.c
compiling lkdemo.c
compiling minarea.c
compiling morphology.c
compiling motempl.c
compiling pyramid_segmentation.c
compiling squares.c
compiling blobtrack.cpp
compiling image.cpp
compiling inpaint.cpp
compiling letter_recog.cpp
compiling mushroom.cpp
compiling watershed.cpp
macBook:~/myTest/opencv-1.0.0/samples/c paraches$ 

問題なく終了したらとりあえず遊んでみる。

macBook:~/myTest/opencv-1.0.0/samples/c paraches$ ./facedetect ./mySample.jpg


顔認識をネットから拾ってきた画像でやってみた。結果、デジカメの CM でやってるみたいにちゃんと認識できるもんなんだね。
この facedetect は引数なしで実行すると MacBook に標準装備の iSight からの入力を使ってリアルタイムで認識をしてくれる。自分が動いてもちゃんと自分の顔を認識し続けるのは凄い!横を向いたりすると駄目になるけど…
他にもあれこれ面白いサンプルがたくさんで結構遊べる〜!
lkdemo の night mode on で auto-initialize するのが 3D データ作ってるっぽくて好き。