May 29, 2011

Ubuntu10.10 に OpenCV2.2 をインストールする

::OpenCV2.2でCUDA対応する導入法はこちら
::OpenCV2.3RCの導入法はこちら

UbuntuにはaptitudeでもOpenCVは導入可能だが、その場合Versionが2.1になってしまう。
せっかくなので2.2を入れる。
主にここここを参考にする。
Ubuntu10.10デスクトップ版を対象とする。

まず依存を解決する
$ sudo apt-get install libtbb2 libtbb-dev libgtk2.0-dev build-essential pkg-config libpng12-0 libpng12-dev libpng3 libpng3-dev libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg zlib1g zlib1g-dev libjasper-dev libjasper-runtime libjasper1 pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools  libjpeg62 libjpeg62-dev libjpeg62-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev openexr libswscale0 libswscale-dev libeigen2-dev libopenexr-dev subversion subversion-tools doxygen doxygen-gui cmake

あとはソースを落としてきて導入。
また、途中でCMakeLists.txtをsedで編集している。これはUbuntuのPythonがsite-packagesを見にいかないため。
$ mkdir -p ~/local/src
$ cd ~/local/src
$ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.2/OpenCV-2.2.0.tar.bz2
$ tar jxvf OpenCV-2.2.0.tar.bz2
$ cd OpenCV-2.2.0
$ sed -i s/site-packages/dist-packages/g CMakeLists.txt
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BULD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_QT=ON -D WITH_QT_OPENGL=ON -D BUILD_DOXYGEN_DOCS=ON ../
$ make -j2
$ sudo make install

忘れずにldconfig
$ sudo ldconfig

CUDA対応もそんなに難儀しなさそうなので、今度やってみよう。

64bit Ubuntu10.10 でChromeを入れてもFlashがbuilt-inされてない…

なんの因果か64bit版UbuntuにChromeを入れてもFlashがbuilt-inされていない。
絶望したのでライブラリをAdobeから落としてきて対処する。

公式サイトから"Download plug-in for 64-bit Linux"をたどってtar.gzファイルをDL

解答した中身を
$ sudo mv libflashplayer.so /usr/lib64/
$ sudo mkdir /opt/google/chrome/plugins
$ sudo sudo ln -s /usr/lib64/libflashplayer.so /opt/google/chrome/plugins/
と配置してChromeを再起動すればok

May 24, 2011

OpenCV haartraining が segmentation fault する件

最近は画像処理で遊んでいる。
OpenCVに関しては導入から利用まで一通り後でまとめるとして(まとめた)、haarliketrainingが落ちる理由が非常にションボリだったのでここに書き連ねておく。

このあたりの記事を参考にオブジェクト検出器をつくろうとおもって負例500件、正例1件をあつめ,neg.txt(前述記事中のNG.txt)をつくり,(正例は1個だけだったのでリストはつくっていない)
$ #正例にアフィン変換をかけて正例を増やす
$ opencv_createsamples -img pos/pos.jpg -vec pos.vec -num 1000 -bgcolor 255 -w 100 -h 100
$ #負例と合わせて学習
$ opencv_haarliketraining -data training -vec pos.vec -bg neg.txt -npos 1000 -nneg 500  -w 100 -h 100 -mode ALL -nonsysm -mem 1000
とやってみると、segmentation faultする。
Google先生に聞くと、OpenCV1.x系だとneg.txtに記述されている負例のうち、実体がないものがあるとセグフォ、とおっしゃるのだがちゃんと全てのファイルは実在するしpathも間違ってない。そもそもOpenCV2.x系だしなぁ…
ということでうろうろしていると、
I had this problem as well, see bug #964145 on SourceForge. In short,
the negative samples have to be at least twice as wide and twice as
high as the positive samples, otherwise training will crash at some
stage.
http://tech.groups.yahoo.com/group/OpenCV/message/24290
ということらしい。
つまり、すべての負例が正例サンプルのタテヨコ2倍以上の大きさが無いと落ちるらしい…

ドキュメントの目立つところにそれぐらい書いておいて欲しい…

負例の最小値が100x40だったので
$ #正例をアフィン変換をかけて正例を増やす
$ opencv_createsamples -img pos/pos.jpg -vec pos.vec -num 1000 -bgcolor 255 -w 50 -h 20
$ #負例と合わせて学習
$ opencv_haarliketraining -data training -vec pos.vec -bg neg.txt -npos 1000 -nneg 500  -w 50 -h 20 -mode ALL -nonsysm -mem 1000
で問題なく学習完了

ちなみに学習完了までものすごい時間がかかる。

May 10, 2011

Ubuntu10.10デスクトップ版のhome以下のディレクトリ名を英語化する

日本語でUbuntu10.10デスクトップ版を導入したら
homeディレクトリ以下の各種ディレクトリ名が日本語表記でだいぶ萎える。

一般には、
"英語で導入し追加言語で日本語を選ぶ"
のが原則らしい。

再インストールとか面倒なので下記のコマンドを実行して対応する。

$ LANG=C xdg-user-dirs-gtk-update