Библиотека изображений Python - PIL просто выполняет базовые операции с изображениями - открытие, некоторые преобразования или фильтры и сохранение в других форматах.
Распознавание образов, является частью усовершенствованного поля обработки изображений и развивается - оно использует алгоритмы, значительно отличающиеся от тех, которые присутствуют в PIL.
Есть некоторые библиотеки и фреймворки, которые вы можете использовать в Python для распознавания образов - (распознавание звезд, лун и т. Д.) - Хотя я вас опередил: если вы хотите, чтобы это просто классифицировало «один на один» coutnry flags, вы должны делать это вручную, а не пытаться погрузиться в распознавание образов.
Ваш комментарий о количестве цветов говорит о том, что вы вообще не используете компьютерные изображения. И распознавание образов хардкорно, даже с интерфейсом Python. (Вы не можете ожидать, что какая-либо текущая структура заранее знает, что такое, например, «луна» или «звезда»)
Таким образом, для менее чем 500 изображений вы можете прибегнуть к программному обеспечению, которое позволяет помечать изображения вручную и писать код для привязки тегов к каждому флагу.
Что касается цветов: растровые изображения компьютера формируются из пикселей. Это площадь. На границе между разными цветами, если пиксель имеет один цвет (скажем, белый), а его сосед - совершенно другой цвет (например, красный), эта граница будет отображаться неровной. Это известно как «псевдонимы». Чтобы уменьшить это, компьютерное программное обеспечение смешивает цвета на жестких границах, создавая промежуточные цвета - вот почему PNG даже с двумя видимыми цветами может иметь несколько цветов внутри. Для .JPG это еще хуже, потому что округленные десятичные числа для цветов RGB, которые мы используем, даже не сохраняются, как они есть на изображении.
В отличие от распознавания образов, вы можете уменьшить количество видимых цветов, используя только самые значимые биты каждого компонента. Я бы сказал, что двух самых значимых битов будет достаточно.
Следующая функция python может сделать это, используя счетчик цветов, заданный PIL:
def get_main_colors(col_list):
main_colors = set()
for index, color in col_list:
main_colors.add(tuple(component >> 6 for component in color))
return [tuple(component << 6 for component in color) for color in main_colors]
вызвать его, например, с помощью get_main_colors (bild.get_colors ()).
Вот еще один вопрос, касающийся части распознавания образов:
распознавание изображений Python