Imagerで画像を2値化する
Imager::Enginesていうのが強力過ぎて、
なんか良く分からないんだけど、2値化とかするのに便利っぽい。
何が良く分からないかというと、
Postfix expressionsを使わなくちゃいけなくて、
たぶん、逆ポーランド記法のことだと思う。
で、こんな感じコードを書く。
use v5.14;
use strict;
use warnings;
use Imager;
my $src = Imager->new( file => $ARGV[0] ) or die Imager->errstr();
my $newimg = Imager::transform2( {
channels => 1,
rpnexpr => 'x y getp1 !pix @pix hue 180 gt @pix hue 52 lt or @pix sat 0.1 lt or 255 255 255 rgb 0 0 0 rgb ifp'
}, $src );
$newimg->write( file => "dst.png" );
すると、こんな感じで2値化されて便利。
やっていることは、赤っぽい色 or 彩度の低いピクセルを抽出している。
あと、トマトを食べる時は、MacBook Airの前で食べない方が良い。
じゃないと、キーボードにトマトの中身が降り掛かることになる。
おしまい。


Leave a Comment