我想尝试平均图像中的颜色,我想出了以下脚本(来自here):
scrip.rb:
require 'rmagick'
file = "./img.jpg"
img = Magick::Image.read(file).first
color = img.scale(1, 1).pixel_color(0,0)
p [color.red, color.green, color.blue]
但RGB输出为[31829, 30571, 27931]
。
问题:
[0-255]
?答案 0 :(得分:0)
奇数输出的原因是由于位深度。正如之前的回答所述,“它们存储在16位的'量子深度'中。”这是一个初步假设,但通过查看以前的答案,这更有意义。为了将这些数字正确地转换回典型的[0-255]范围,您必须将值除以256.
注意:您可以在运行时更改量子深度。在读取文件时,您应该能够使用如下代码中所示的块。
img = Magick::Image.read(file){self.depth = 8}.first
答案 1 :(得分:0)
您所拥有的是红色,绿色和蓝色直方图值。
您需要除以256
才能获得每个RGB值。在这种情况下,RGB值为:
require 'rmagick'
file = "./img.jpg"
img = Magick::Image.read(file).first
color = img.scale(1, 1).pixel_color(0,0)
p [color.red/256, color.green/256, color.blue/256]
# => [124, 119, 109]
This blog post提供了有关如何使用RMagick
分析图像的更全面的解释。