Ruby/OpenCVで遊んでみる
※この記事はRuby/OpenCV - An OpenCV Ruby wrapperを日本語訳したものです。
はじめに
Ruby/OpenCVは、OpenCVというコンピュータビジョン用ライブラリのRuby用ラッパーです。これを使うことで、顔検出のようなコンピュータビジョンのプログラムをRubyで簡単に書くことができます。
というわけで、インストール方法と使い方などを。
環境
- Ruby 1.8.7 (1.9には未対応のようです)
- Ruby/OpenCV(Jeff Rafterによるフォーク)
- オリジナルは最近のOpenCVをサポートしていないっぽいです。しかし、Jeff Rafterによるフォーク版であればOpenCV 2.0以降に対応してるので、これを使います。
- OpenCV 2.1
- Ubuntu 10.10
インストール
1. OpenCVのインストール
$ sudo apt-get install libcv-dev libcv2.1 libcvaux-dev libcvaux2.1 libhighgui-dev libhighgui2.1 opencv-doc
2. Ruby/OpenCVのインストール
git clone git://github.com/jeffrafter/ruby-opencv.git
cd ruby-opencv
ruby ext/extconf.rb
make
make install
Ubuntuでapt-getを使ってOpenCVをインストールした場合は、こんな感じでインクルードパスを指定してください。
ruby ext/extconf.rb --with-opencv-include=/usr/include/opencv/
使ってみる
画像から人間の顔を検出するサンプルコード
#!/usr/bin/env ruby require 'opencv' include OpenCV # 画像をロード img = IplImage.load('sample.jpg') # 顔検出に使うカスケードをロード detector = CvHaarClassifierCascade::load('haarcascade_frontalface_alt.xml.gz') # 顔を検出して四角で囲む detector.detect_objects(img) { |rect| img.rectangle!(rect.top_left, rect.bottom_right, :color => CvColor::Red) } # ウィンドウを作って画像を表示 window = GUI::Window.new('Face Detection') window.show(img) GUI::wait_key
この他にも、examplesディレクトリ以下にサンプルがあります。