OpenCVで顔認識しよ?
元はと言えば、Rubyで画像処理で何かおもしろそうなネタはないかなぁと探していた。どうやらwikipedia:OpenCVを使用した顔認識がRubyistの中で流行っていた*1らしい。早速試してみた。
まずRuby用のOpenCVライブラリobjectdetectを使って顔認識、wikipedia:ImageMagickライブラリRMagickで画像をいじる、というわけですな。
$sudo port install opencv $sudo port install ImageMagick $sudo gem install rmagick $sudo gem install objectdetect
Macだとこんなところ。
でロックオンさんを参考に、下記のようにコーディング。
require 'rubygems' require 'objectdetect' require 'RMagick' image = "Leah.jpg" model = "/opt/local/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml" d = ObjectDetect::detect(model, image) pic = Magick::ImageList.new(image) square = Magick::Draw.new square.stroke('red') square.fill_opacity(0.5) d.each { |pos| x, y, w, h = pos square.polyline(x, y, x+w, y, x+w, y+h, x, y+h, x, y) square.draw(pic) } pic.write('output.jpg')
それでは結果を見てみましょう。
Leah.jpg(元画像) | output.jpg(結果) |
おもしろいかも!これを使ったネタをちょっと考えておきます。はい。
*1:過去形