rubyでも画像処理の定番ライブラリopenCVを使うことができます。
導入
まずopenCVがなければ導入します。
$ brew install opencv
次に、gem「ruby-opencv」を入れます。
導入時にライブラリのインストール先を指示する必要があります。
brewで導入した場合はログを見るとインストール先が出ているので、
それをwith-opencv-dirオプションの引数に指定します。
$ gem install ruby-opencv -- --with-opencv-dir=/usr/local/Cellar/opencv/2.4.9/
つかってみる
では、試しに顔認識アプリを走らせる環境をそろえてみます。
顔認識には標準添付のライブラリが必要なのでコピーしてきます。
$ mkdir -p ./data/haarcascades $ cp /usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml .//data/haarcascades/haarcascade_frontalface_alt.xml $ touch test.rb
サンプルコードは公式そのまんまです。
# test.rb require 'opencv' include OpenCV if ARGV.length < 2 puts "Usage: ruby #{__FILE__} source dest" exit end data = './data/haarcascades/haarcascade_frontalface_alt.xml' detector = CvHaarClassifierCascade::load(data) image = CvMat.load(ARGV[0]) detector.detect_objects(image).each do |region| color = CvColor::Blue image.rectangle! region.top_left, region.bottom_right, :color => color end image.save_image(ARGV[1]) window = GUI::Window.new('Face detection') window.show(image) GUI::wait_key
あとは
$ ruby test.rb pic_with_face.jpg result.jpg
とやると、顔を青枠で囲んだ画面が出てきます。
画面を消すには、アクティブにして適当なキーを押せばよいです。