OpenCVを使って画像の物体認識をするPerlモジュール作った


作った。

http://search.cpan.org/dist/Image-ObjectDetect/


http://d.hatena.ne.jp/darashi/20070223/1172232765Rubyの拡張ライブラリを公開されていたので、こりゃやらなくちゃ・・・と思った次第です。すみません。


こんな感じで使えます。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/