如何判断图像是否暗? (高对比度,低亮度)

时间:2011-10-28 23:14:24

标签: image graphics image-processing imagemagick

作为我正在开展的项目的一部分,我需要使用CLI Linux应用程序简单地分析图片并确定其是否为暗图像(高对比度,低亮度)。

到目前为止,我发现我可以使用ImageMagick来获取图像的详细信息,但不确定如何使用该数据......还是有更简单的解决方案?

1 个答案:

答案 0 :(得分:17)

您可以将图像缩放到非常小的图像 - 尺寸为1x1像素的图像,并表示"平均颜色"原始图片:

 convert  original.jpeg  -resize 1x1  1pixel-original.jpeg

然后调查单个像素的颜色,第一个

convert  1pixel-original.jpeg  1pixel-jpeg.txt 

然后

cat 1pixel-jpeg.txt

  # ImageMagick pixel enumeration: 1,1,255,srgb
  0,0: (130,113,108)  #82716C  srgb(130,113,108)

您也可以一次性获得相同的结果:

convert  original.jpeg  -resize 1x1  txt:-

  # ImageMagick pixel enumeration: 1,1,255,srgb
  0,0: (130,113,108)  #82716C  srgb(130,113,108)

通过这种方式,您可以获得" avarage像素的值#34;在输入图像的原始色彩空间中,您可以评估其亮度' (但是你定义了这个。)

您可以将图像转换为灰度,然后调整大小。通过这种方式,您可以获得灰度值作为亮度的衡量标准'

convert  original.jpeg  -colorspace gray  -resize 1x1  txt:-

  # ImageMagick pixel enumeration: 1,1,255,gray
  0,0: (117,117,117)  #757575  gray(117,117,117)

您还可以将图像转换为HSB空间(色调,饱和度,亮度)并执行相同的操作:

convert  original.jpeg  -colorspace hsb  -resize 1x1  txt:-

  # ImageMagick pixel enumeration: 1,1,255,hsb
  0,0: ( 61, 62,134)  #3D3E86  hsb(24.1138%,24.1764%,52.4941%)

亮度'您在此处看到的值(134#8652.4941%)可能是您想知道的。