使用cli查找所有像素的平均值

时间:2012-08-08 22:36:53

标签: image imagemagick

是否有获取图像中所有像素平均值的cli方法

例如

- 如果我有一个全黑的图像,我想输入:

   *cmd* black-img.jpg 

,shell中的输出为0

2 个答案:

答案 0 :(得分:4)

哦,这很简单:

convert  image.jpg  -scale 1x1\!  txt:-

该命令使用ImageMagick的convert强制将输入图像缩放到1x1像素的大小。对于8位RGBA图像,输出将是这样的:

# ImageMagick pixel enumeration: 1,1,255,srgba
0,0: (151,161,212, 92)  #97A1D45C  srgba(151,161,212,0.361928)

或这对于8位sRGB图像:

# ImageMagick pixel enumeration: 1,1,255,srgb
0,0: (229,226,229)  #E5E2E5  srgb(229,226,229)

它表示生成的单像素图​​像的颜色值:

  • 0,0:是此像素的坐标:第1列中的第1行。
  • (151,161,212, 92)代表 R ed, G reen, B lue和 A lpha值RGBA像素。
  • (229,226,229)代表sRGB像素的 R ed, G reen和 B lue值。
  • #97A1D45C#E5E2E5分别是十六进制值。

现在,如果它是一个黑色像素,那么将此输出计算到' a '0'在shell'中是你自己的工作。 : - )

答案 1 :(得分:1)

好的,原来的海报似乎不想要3或4 颜色频道值,当他要求'获取图像中所有像素的平均值时 ...他希望通过首先将图像转换为灰度来获得单个值:

convert  image.jpg  -colorspace gray  -scale 1x1\!  txt:-

与其他答案相同的8位RGBA(带Alpha通道)图像的样本输出:

# ImageMagick pixel enumeration: 1,1,255,graya
0,0: (119,119,119, 92)  #7777775C  graya(119,119,119,0.361928)

从之前输出8位sRGB图像(没有Alpha通道):

# ImageMagick pixel enumeration: 1,1,255,gray
0,0: (221,221,221)  #DDDDDD  gray(221,221,221)