Как определить, является ли изображение темным?(высокая контрастность, низкая яркость) - PullRequest
4 голосов
/ 29 октября 2011

В рамках проекта, над которым я работаю, мне нужно просто проанализировать изображение с помощью приложения CLI Linux и определить, является ли его темное изображение (высокая контрастность, низкая яркость).

Пока что я понялЯ могу использовать ImageMagick для получения подробной информации об изображении, но не знаю, как использовать эти данные ... или есть более простое решение?

1 Ответ

17 голосов
/ 20 августа 2012

Вы можете масштабировать изображение до очень маленького размера, которое имеет размер 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)

Таким образом, вы получите значения для вашего "«средний пиксель» в исходном цветовом пространстве входного изображения, которое вы можете оценить по его «яркости» (как бы вы его ни определяли).

Вы можете преобразовать изображение в оттенки серого и затем изменить его размер.Таким образом, вы получите значение серого как меру «яркости»:

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, #86 или 52.4941%), вероятно, то, что вы хотите знать.

...