我在访问color_histogram()返回的哈希时遇到问题。我的图像中只有黑白像素,这非常令人沮丧。
当我这样做时
puts hist.inspect() # returns "{red=0, green=0, blue=0, opacity=0=>779753, red=65535, green=65535, blue=65535, opacity=0=>6679}"
根据文档,关键是Pixel对象,所以我构建
black = Magick::Pixel.from_color('black')
white = Magick::Pixel.from_color('white')
puts black.inspect # red=0, green=0, blue=0, opacity=0
puts white.inspect # red=65535, green=65535, blue=65535, opacity=0
puts hist[white] # raises exception: `[]': can't convert Magick::Pixel into Integer (TypeError)
我是否可以轻松访问直方图?
由于
答案 0 :(得分:0)
您在color_histogram
来电与hist
之间的某处更改了hist[white]
。这对我来说很简单,只需要一个简单的黑白bw.png
:
> i = Magick::Image.read('bw.png').first
=> bw.png PNG 100x100 100x100+0+0 DirectClass 8-bit 466b
> h = i.color_histogram
=> {red=0, green=0, blue=0, opacity=0=>2342, red=65535, green=65535, blue=65535, opacity=0=>7658}
> black = Magick::Pixel.from_color('black')
=> red=0, green=0, blue=0, opacity=0
> h[black]
=> 2342
你“无法将Magick :: Pixel转换为Integer(TypeError)”错误很容易使用数组重现:
> a = [ ]
=> []
> a[black]
TypeError: can't convert Magick::Pixel into Integer
Hash永远不会通过简单的访问产生TypeError。