2

有没有一种获取图像中所有像素平均值的cli方法

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

   *cmd* black-img.jpg 

并且输出将0在外壳中

4

2 回答 2

5

哦,这很简单:

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

该命令使用 ImageMagickconvert强制将输入图像缩放为 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:是该像素的坐标:第一列中的第一行。
  • (151,161,212, 92)表示 RGBA 像素的 R ed、G reen、B lue 和 A lpha 值。
  • (229,226,229)表示 sRGB 像素的R ed、G reen 和 B lue 值。
  • #97A1D45C并且#E5E2E5是各自的十六进制值。

现在,如果它是一个黑色像素,则将这个输出计算为“外壳中的a'0' ”是您自己的工作。:-)

于 2012-08-08T23:22:57.340 回答
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)
于 2012-08-09T07:35:01.847 回答