OpenCVを使って画像の物体認識をするPerlモジュール作った
作った。
http://search.cpan.org/dist/Image-ObjectDetect/
http://d.hatena.ne.jp/darashi/20070223/1172232765でRubyの拡張ライブラリを公開されていたので、こりゃやらなくちゃ・・・と思った次第です。すみません。
こんな感じで使えます。Imagerで顔を囲んでみた。
#!/usr/local/bin/perl use strict; use warnings; use Imager; use Image::ObjectDetect; my $file = 'picture.jpg'; my $image = Imager->new->read(file => $file); my $cascade = '/usr/local/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml'; my $detector = Image::ObjectDetect->new($cascade); my @faces = $detector->detect($file); # or my @faces = detect_objects($cascade, $file); for my $face (@faces) { $image->box( xmin => $face->{x}, ymin => $face->{y}, xmax => $face->{x} + $face->{width}, ymax => $face->{y} + $face->{height}, color => 'red', filled => 0, ); } $image->write(file => 'output.jpg');
出来上がりがこれ。
↑ソフトウェアジャパンの時のやつです。
楠さん、まつもとさん、id:clonedさん、Nakagawaさん、勝手に写真使わせて頂きました。スミマセン。
とりあえず静止画の物体認識のみです。
これでとりあえずPerlのみで顔認識のWebサービスとかつくれると思います。
riyaみたいなのとか。
フルのバインディングはやってないわけではないんですが・・・
何せライブラリがでかいもんで、動作確認も一苦労でモチベーションあまりあがらず。←言い訳ですすみません
追記
すみません。アップロードするファイルが間違ってました。
0.02をあげてあります。
追記2
OOインターフェースを付けたのと、バグ修正した0.10をあげました。
サンプルも直しました。
とりあえず反映されるまで↓から取ってください。
http://spiritloose.net/tmp/Image-ObjectDetect-0.10.tar.gz
普通にCPANからとってください。
http://search.cpan.org/dist/Image-ObjectDetect/