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

Gre*_*ano 4 graphics image imagemagick image-processing

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

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

Kur*_*fle 17

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

 convert  original.jpeg  -resize 1x1  1pixel-original.jpeg
Run Code Online (Sandbox Code Playgroud)

然后首先研究单个像素的颜色

convert  1pixel-original.jpeg  1pixel-jpeg.txt 
Run Code Online (Sandbox Code Playgroud)

然后

cat 1pixel-jpeg.txt

  # ImageMagick pixel enumeration: 1,1,255,srgb
  0,0: (130,113,108)  #82716C  srgb(130,113,108)
Run Code Online (Sandbox Code Playgroud)

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

convert  original.jpeg  -resize 1x1  txt:-

  # ImageMagick pixel enumeration: 1,1,255,srgb
  0,0: (130,113,108)  #82716C  srgb(130,113,108)
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以在输入图像的原始颜色空间中获得"avarage像素"的值,您可以根据其"亮度"对其进行评估(但是您可以对其进行定义).

您可以将图像转换为灰度,然后调整大小.这样你就可以得到灰度值来衡量"亮度":

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)
Run Code Online (Sandbox Code Playgroud)

您还可以将图像转换为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%)
Run Code Online (Sandbox Code Playgroud)

您在此处看到的"亮度"值(或者134,#86或者52.4941%)可能是您想要了解的.