2011年8月29日月曜日

OpenCV2.3.1インストール for Ubuntu10.04

OpenCVWillow Garageが開発を行っているライブラリ。
最近では,画像処理だけでなく機械学習まわりも強化されているため,ひじょーに便利なライブラリです。
私がここ最近書いたプログラムは,ほとんどがこのライブラリに依存している状態ですw



OpenCV2.3のバグをとった2.3.1がリリースされたし,使いたい関数もあるのでバージョンをあげるぜーー
また2.3からOpenNIをサポートしているので,kinectの距離画像とかも簡単に取れて遊びたい放題♫


まず,公式からOpenCV2.3.1.tar.bz2をダウンロード
ダウンロードしたらそれを解凍しておく。
$ tar jxvf OpenCV2.3.1.tar.bz2

次に,apt-getで必要になりそうなものをひたすらインストール(詳しくはReadme参照で
$ sudo apt-get install cheese coriander \ 
 cmake pkg-config g++ build-essential \ 
 mencoder mplayer \ 
 libgtk2.0-0 libgtk2.0-dev \ 
 libjpeg-dev libpng-dev libtiff-dev libjpeg62 libjpeg62-dev libjpeg62-dbg \ 
 ffmpeg libavcodec-dev libavcodec52 libavformat-dev libavformat52 libswscale-dev libavfilter-dev \ 
 libdc1394-22 libdc1394-22-dev \ 
 python2.6 python2.6-dev python-numpy \ 
 libtbb2 libtbb-dev \ 
 libgstreamer0.10-0 libgstreamer0.10-dev libgstreamer-plugins-base0.10-0 libgstreamer-plugins-base0.10-dev 
 
$ sudo ldconfig

次にcmakeをして,必要なパッケージが入っているかを確認する。
$ cd OpenCV2.3.1/
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_GTK=ON -D BUILD_EXAMPLES=ON .
 

cmakeを実行した際に出力されるメッセージの最後の方が以下のようなら多分大丈夫b
ほかに入れたいものがあるなら随時インストール
-- General configuration for opencv 2.3.1 =====================================
-- 
--     Built as dynamic libs?:     YES
--     Compiler:                   /usr/bin/c++
--     C++ flags (Release):          -Wall -pthread -march=i686 -ffunction-sections  -O3 -DNDEBUG  -fomit-frame-pointer -msse -msse2 -mfpmath=387 -DNDEBUG 
--     C++ flags (Debug):            -Wall -pthread -march=i686 -ffunction-sections  -g  -O0 -DDEBUG -D_DEBUG -ggdb3 
--     Linker flags (Release):
--     Linker flags (Debug):
-- 
--   GUI: 
--     GTK+ 2.x:                   YES
--     GThread:                    YES
-- 
--   Media I/O: 
--     ZLib:                       YES
--     JPEG:                       TRUE
--     PNG:                        TRUE
--     TIFF:                       TRUE
--     JPEG 2000:                  TRUE
--     OpenEXR:                    NO
--     OpenNI:                     NO
--     OpenNI PrimeSensor Modules: NO
--     XIMEA:                      NO
-- 
--   Video I/O:
--     DC1394 1.x:                 NO
--     DC1394 2.x:                 YES
--     FFMPEG:                     YES
--       codec:                    YES
--       format:                   YES
--       util:                     YES
--       swscale:                  YES
--       gentoo-style:             YES
--     GStreamer:                  YES
--     UniCap:                     NO
--     PvAPI:                      NO
--     V4L/V4L2:                   1/1
--     Xine:                       NO
-- 
--   Other third-party libraries:
--     Use IPP:                    NO
--     Use TBB:                    YES
--     Use ThreadingFramework:     NO
--     Use Cuda:                   NO
--     Use Eigen:                  YES
-- 
--   Interfaces:
--     Python:                     YES
--     Python interpreter:         /usr/bin/python2.6 -B (ver 2.6)
--     Python numpy:               YES
--     Java:                       NO
-- 
--   Documentation:
--     Sphinx:                     NO
--     PdfLaTeX compiler:          /usr/bin/pdflatex
--     Build Documentation:        NO
-- 
--   Tests and samples:
--     Tests:                      YES
--     Examples:                   YES
-- 
--   Install path:                 /usr/local
-- 
--   cvconfig.h is in:             /home/user/Downloads/OpenCV-2.3.1
-- -----------------------------------------------------------------

最後にmakeしてインストールをすれば終了
$ make -j2
$ sudo make install
$ sudo ldconfig

インストールが無事に完了は,サンプルのコンパイルで確認することができます.
以下を実行してできた実行ファイルのどれかを動かすことができたらおk
$ cd sample/c/
$ sh build_all.sh


Kinectで遊びたい人は,OpenNIを入れる必要があります.
そのへんのインストールはこっちで






2011年8月10日水曜日

コードをきれいに表示する

SyntaxHighlighterを利用することで,コードをきれいにblogger上に表示できるようになる
詳しいことは公式サイト参照
http://alexgorbatchev.com/SyntaxHighlighter/

html上の<head>の中に以下を追加




















実際に使うときは,本文中に下のような感じで記述する
<pre class="brush: cpp">
int main(void){
  return 0;
}
</pre>