e.g. Изображение ниже в конечном итоге должно быть квантовано до 3 цветов, тогда как количество фактических цветов на исходном изображении составляет более 30. Все «бортовые» цвета «антиалиации» следует считать несовершеннолетними и устранять при квантовании, а также «артефакты JPEG», которые добавляют больше цветов в изображение из-за чрезмерной оптимизации.
Примечание: исходным изображением может быть либо PNG, либо JPEG. Пример "src =" https://i.sstatic.net/jukau.png "/>
Для самого квантования я использую pil.quantize (...) с k в качестве количества цветов, которые нужно оставить. И это работает довольно хорошо и сохраняет палитру идеально подходить к оригиналу. < /P>
Код: Выделить всё
def color_quantize(path, K):
image = cv2.imread(path, cv2.IMREAD_UNCHANGED)
img = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
im_pil = Image.fromarray(np.uint8(img))
im_pil = im_pil.quantize(K, None, 0, None)
return cv2.cvtColor(np.array(im_pil.convert("RGB")), cv2.COLOR_RGB2BGR)
Есть ли способ определить количество основных цветов?>
Подробнее здесь: https://stackoverflow.com/questions/692 ... or-palette