Вы можете начать с convert
, превратив изображение в оттенки серого и compare
, превратив его в исходное изображение. Если изображение уже черно-белое, можно ожидать, что эти два изображения будут очень похожими; если он полноцветный, можно ожидать, что они будут другими.
Пояснение: Учитывая два комментария ниже, я думаю, что я не был достаточно ясен здесь. Конечно, черно-белая версия черно-белого изображения, хранящегося в формате RGB, скорее всего, не будет точно такой же, как исходное изображение, но оно должно быть довольно близко. Вычитание версии в оттенках серого из оригинала приведет к темной рамке со слабым призраком исходного изображения. Вы можете пороговое изображение, чтобы получить полностью черную рамку. С другой стороны, полноцветное изображение будет значительно отличаться от его аналога в градациях серого, а вычитание последнего из первого даст изображение, которое все еще имеет много цветов даже после определения порога (какие именно цвета зависят от того, как выполняется преобразование в градациях серого). сделано).
Другой вариант: Еще раз подумав о проблеме, другой вариант - преобразовать изображение в нейтральную белую точку и затем сравнить красный, зеленый и синий каналы. В цветном изображении они будут иметь значительные различия; на черно-белом изображении они должны быть очень похожими. Опять же, они могут не совпадать, в зависимости от того, как изображение было получено в первую очередь, но различия должны быть достаточно малы, чтобы их можно было легко отфильтровать. По сути, это та же идея, что и выше, но этот подход, возможно, более прост.