有没有一种获取图像中所有像素平均值的cli方法
例如 - 如果我有一个全黑图像,我想输入:
*cmd* black-img.jpg
并且输出将0
在外壳中
哦,这很简单:
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'
”是您自己的工作。:-)
好的,所以当原始海报询问“获取图像中所有像素的平均值”时,他似乎不想要 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)