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 是一个类。所以这解释了奇怪的输出。散列中的每个键都是 class 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 回答