2009-06-30 21 views
14

No estoy seguro de cómo reducir la paleta de colores de una imagen PIL. Me gustaría reducir la paleta de una imagen a los 5 colores prominentes que se encuentran en esa imagen. Mi objetivo general es hacer un muestreo de color básico.Cómo reducir la paleta de colores con PIL

Respuesta

2

Supongo que quiere hacer algo más sofisticado que posterize. "Muestreo" como dices, tomará cierta delicadeza, ya que los 5 colores más comunes en la imagen probablemente sean similares entre sí. Tal vez eche un vistazo a los 5 picos más separados en un histogram.

24

Eso es fácil, sólo tiene que utilizar el argumento de colores indocumentado:

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

estoy usando Image.ADAPTIVE para evitar el tramado

+0

Gracias, eso es maravilloso. Siempre he odiado la documentación de PIL. ¿Cómo lo vuelves a convertir? Con 'image.convert (" RGB ", palette = Image.ADAPTIVE, colors = 5)' ¿o algo más? – Cosine

+1

Esto ahora está documentado en [im.quantize] (http://effbot.org/imagingbook/image.htm). – unutbu

+2

@unutbu, 'im.quantize' está en desuso. –

Cuestiones relacionadas