Image::Compareモジュール

ぼちぼち、ここの更新もちゃんと再開。本日はImage::Compareというモジュールを使ってみていた。

このモジュールはその名の通り二つの画像を比較して、同じ画像かどうかを判定してくれる。便利なのは、完全に一致する画像だけでなくて、しきい値を指定することでだいたい同じそうな画像も判定してくれる所。使い方もわりと簡単で、

  • 一つめの画像の指定
  • 二つめの画像の指定
  • 比較方法の指定
  • 比較結果の取得

とわかりやすい。画像の指定にはURLも指定できて便利。比較方法もいくつかあって、しきい値も0〜441.7とわりと幅が利く。よいしきい値が選べさえすればなにかと使えそう。

どうやら、実装はImagerという別のモジュール使ってるようなんだけど、はげしく複雑そうな計算が行われてるっぽいのでここは、「情報隠蔽、カプセル化」と呪文をとなえながら使うのが良さげ。

my $cmp = Image::Compare->new;

#一つめの画像の指定
$cmp->set_image1 (
    img  => $img1
);

#二つめの画像の指定
$cmp->set_image2 (
    img  => $img2
);

#比較方法の指定
$cmp->set_method(
    method => &Image::Compare::THRESHOLD,
    args   => $threshold,
);  

if ($cmp->compare()) {
    print 'SAME';
}
else {
    print 'NOT SAME';
}