PerlでOpenCVを使ってみた


以下の環境で試しています。
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 件のコメント :

コメントを投稿