Ruby/OpenCVで遊んでみる

※この記事はRuby/OpenCV - An OpenCV Ruby wrapperを日本語訳したものです。

はじめに

Ruby/OpenCVは、OpenCVというコンピュータビジョン用ライブラリのRuby用ラッパーです。これを使うことで、顔検出のようなコンピュータビジョンのプログラムをRubyで簡単に書くことができます。
というわけで、インストール方法と使い方などを。


環境


インストール

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

実行結果はこんな感じ
f:id:ser1zw:20101208224902p:image

この他にも、examplesディレクトリ以下にサンプルがあります。