2009-06-30 14 views
14

Non sono sicuro di come procedere per ridurre la tavolozza dei colori di un'immagine PIL. Vorrei ridurre la tavolozza di un'immagine ai 5 colori principali che si trovano in quell'immagine. Il mio obiettivo generale è fare un campionamento di base dei colori.Come ridurre la tavolozza dei colori con PIL

risposta

2

Presumo che tu voglia fare qualcosa di più sofisticato di posterize. "Sampling", come dici tu, avrà una certa finezza, in quanto i 5 colori più comuni nell'immagine sono probabilmente simili l'uno all'altro. Magari dai un'occhiata ai 5 picchi più separati in uno histogram.

24

Questo è semplice, basta utilizzare l'argomento non documentata colori:

result = image.convert('P', palette=Image.ADAPTIVE, colors=5) 

sto usando Image.ADAPTIVE per evitare il dithering

+0

Grazie, è meraviglioso. Ho sempre odiato la documentazione del PIL. Come si fa a riconvertirlo? Con 'image.convert (" RGB ", palette = Image.ADAPTIVE, colors = 5)' o qualcos'altro? – Cosine

+1

Questo è ora documentato in [im.quantize] (http://effbot.org/imagingbook/image.htm). – unutbu

+2

@unutbu, 'im.quantize' è deprecato. –

Problemi correlati