0

RMagick のcolor_histogramメソッドをいじって、量子化された 8 ビット イメージの色のヒストグラムを取得しました。

ただし、このメソッドから返されるハッシュを取得することになっていますが、何かおかしなことになります。「ハッシュ」を検査したときの IRB からの出力は次のようになります。

=> {red=1907, green=1893, blue=2716, opacity=0=>25801, red=21141, green=14902, blue=13109, opacity=0=>3744, red=35552, green=15344, blue=8229, opacity=0=>1427, red=48734, green=19120, blue=8539, opacity=0=>1280, red=62091, green=22662, blue=8733, opacity=0=>75158, red=57917, green=33805, blue=24932, opacity=0=>275, red=47046, green=39657, blue=37365, opacity=0=>1873, red=64379, green=64336, blue=64330, opacity=0=>10442}

ここで私が間違っていることはありますか?

4

1 に答える 1

5

ドキュメントを読むとcolor_histogram、説明が見つかります。

ハッシュの各キーは、画像に表示される色を表すピクセルです。キーに関連付けられている値は、画像に色が表示される回数です。

さらに見てみると、Pixelはクラスであることがわかります。これで、奇妙な出力が説明されます。ハッシュ内の各キーはクラスのものPixelです。だからあなたが見るとき:

{ red=1907, green=1893, blue=2716, opacity=0 => 25801 }

あなたが本当に見ているのは:

{ Pixel => histogram_count }

または:

{ Pixel(red=1907, green=1893, blue=2716, opacity=0) => 25801 }

irb印刷出力は出力を少し圧縮しただけなので、何が起こっているのかを理解する前に読むのは困難でした。

于 2012-07-01T19:55:29.370 に答える