Как распознать черно-белые изображения?

Мне интересно, есть ли способ распознать (и, возможно, переместить / удалить) черно-белые фотографии в папке, содержащей как черно-белые, так и цветные изображения? Я использую Ubuntu Linux.

One Solution collect form web for “Как распознать черно-белые изображения?”

Если вы установите ImageMagick, вы можете использовать следующую команду для проверки того, что что-то имеет оттенки серого:

$ convert bw.jpg -format "%[colorspace]" info: Gray 

Установить:

 sudo apt-get install imagemagick 

Чтобы пройти через них все и двигаться:

 for i in /images/folder ; do if [ "$(convert $i -format "%[colorspace]" info:)" == "Gray" ]; then mv "$i" /images/folder/bw fi done 

Однако этот метод проверяет только цветовое пространство, которое использует изображение. Изображение может использовать полное цветовое пространство RGB, в то время как только на самом деле используется оттенки серого (в идеале они будут преобразованы в оттенки серого, чтобы быть оптимальными).

Для того, чтобы работать, это просто использование серых тонов, одним из вариантов является преобразование изображения в цвет HSL, а затем вычисление средней насыщенности изображения. Для истинного изображения в оттенках серого средняя насыщенность будет равна нулю. С изображениями в оттенках серого в jpg вы получите немного отклонения от идеального оттенка серого из-за артефактов, и, как правило, они не идеальны в зависимости от того, как они оказались черно-белыми.

Это изображение, например:

Черно-белые комиксы

Если мы преобразуем это в HSL и получим среднее насыщение:

 $ convert black-and-white-comics.jpg -colorspace HSL -channel g \ > -separate +channel -format "%[fx:mean]" info: 0.00781798 

Выходная цифра колеблется от 0 до 1, поэтому вам нужно будет определить порог, при котором вы считаете, что что-то должно быть серого в зависимости от ваших исходных файлов.

  • Ubuntu: инструмент для отображения активности диска в целом и по процессу
  • Как мне разделить диск на двойную загрузку между Windows 7 и Ubuntu?
  • Запуск Ubuntu 9.10 как виртуальной машины на хосте Windows 7
  • Неизвестный процесс linux со случайной командой
  • Выключение неиспользуемых жестких дисков
  • Как виртуальные машины могут потреблять так мало ОЗУ на физической машине?
  • Как переупорядочить папки? (Как показано в `ls -U`)
  • Внешние жесткие диски, поврежденные сектора, восстанавливают / маркируют утилиту в Linux
  • Есть ли эквивалент chkdsk для Ubuntu?
  • Как обмениваться Ethernet-соединением на Ubuntu (Jaunty)?
  • Putty SSH: CTRL + Клавиши курсора не работают, чтобы перейти к предыдущему / следующему слову
  • Interesting Posts

    Какой самый простой способ сделать ваш браузер обновлять страницу каждый раз, 5 секунд?

    Ошибка: операция по умолчанию не найдена

    Может ли шаблон функции члена classа C ++ быть виртуальным?

    Как довольно печатать XML с Java?

    Как у меня нет веб-браузера по умолчанию, поэтому система спрашивает, какой браузер использовать, когда я нажимаю ссылку?

    Ошибки компоновщика GCC C ++: Неопределенная ссылка на «vtable для XXX», Неопределенная ссылка на «ClassName :: ClassName ()»

    Как я могу развернуть и выполнить приложение на устройстве, подключенном к удаленной системе?

    Измените букву диска из командной строки или пакетного скрипта в Windows 8?

    Добавление строки в файл hosts, получение разрешения отклонено при использовании sudo – Mac

    Включить автоматический вход в Windows 10

    Почему жесткие диски отображают размер ниже истинного значения?

    Переход с IE9 на IE8 на Windows 7

    Я обнаружил, что JPA, или, похоже, не поощряет шаблон DAO

    Воспроизведение / пауза VLC с помощью мыши

    Как узнать, завершен ли загруженный ISO?

    Давайте будем гением компьютера.