以下の環境で試しています。
OS:Debian 4.0
PC(?):LinkStation LS-HGLAN
1.)ライブラリのインストール
apt-getを使用してライブラリをインストールします。
LinkStationでコンパイルすると時間が非常にかかるので、apt-getでコンパイル済みのライブラリを入手します。
apt-get install libcv-dev
apt-get install libcvaux-dev
apt-get install libhighgui-dev
apt-get install opencv-doc
2.)CPANから必要なライブラリをインストールする
ImagerとImage::ObjectDetectをCPANからインストールします。
cpanm Image::ObjectDetect
cpanm Imager;
3.)OpenCVの認識用データファイルのコピー
OpenCVのサイトからOpenCVのデータをダウンロードします。
ここでは、opencv-1.0.0.tar.gzを使用します。
圧縮ファイルを展開します。
tar xvzf opencv-1.0.0.tar.gz
以下のディレクトリをコピーします。
opencv-1.0.0/data/haarcascades
ここでは、以下にコピーしています。
/usr/local/share/opencv/haarcascades/
4.)テストコードの実行
サンプルコード(spiritlooseさんのコード)を実行します。
#!/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');
PowerPC 266MHzの環境ではやっぱり重いです(汗)
0 件のコメント :
コメントを投稿