色の名前またはその 16 進コードを使用して、画像内の一意の色のヒストグラムを取得したいと考えています。
QueryColorname メソッドを使用して、ヒストグラム メソッドの出力値を色名または 16 進コードに変換できません。常に黒を返し、16 進コードは返しません。
Querycolorname() メソッドの許容範囲である (0 .. 255) に変換できない、histogram() メソッドからの (0 ... 65535) 結果範囲が原因である可能性があります。
#!/usr/bin/perl
use Image::Magick;
$image=Image::Magick->new();
$image->ReadImage('Sun.jpeg');
my @histogram = $image->Histogram();
print "Red\tGreen\tBlue\tOpacity\tCount\tName\n";
for(my $i=0; $i<=29; $i++){ #Get 5 unique colors
print "$histogram[$i]\t";
if (($i+1)%5 == 0){ #Array elements of unique color
my $name = $image->QueryColorname('rgb16($histogram[$i-4],$histogram[$i-3],$histogram[$i- 2],$histogram[$i-1])');
print "$name\n";
}
}
結果は次のようになります。
赤 緑 青 不透明度 カウント 名前
0 0 0 0 16134 黒
257 257 257 0 27 黒
0 257 0 0 303 黒
257 0 0 0 286 黒
257 257 0 0 8 黒
71 0 0 0 82 黒