2011-08-13 49 views
0

我在訪問由color_histogram()返回的散列時遇到問題。在我的圖像中只有黑白像素,這是非常令人沮喪的。Rmagick直方圖問題

當我做

puts hist.inspect() # returns "{red=0, green=0, blue=0, opacity=0=>779753, red=65535, green=65535, blue=65535, opacity=0=>6679}" 

根據該文件,關鍵是像素對象,所以我構建

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

你改變hist某處你color_histogram呼叫,您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 ::像素爲整數(類型錯誤)」錯誤使用數組容易被複制:

> a = [ ] 
=> [] 
> a[black] 
TypeError: can't convert Magick::Pixel into Integer 

Hash不會從簡單的訪問中產生TypeError。