#python #matplotlib
#python #matplotlib
Вопрос:
У меня есть следующий код
import matplotlib.cm as cm
# cm.spring() is a color map
# E.g., print(cm.spring(4)) outputs (1.0, 0.01568627450980392, 0.9843137254901961, 1.0) which is a RGB color
from PIL import Image, ImageDraw
# Create a black image
img = Image.new('P', (100, 100))
NUM_OF_COLORS = 5
# I want my palette to consist of the first N elements of the color map
img.putpalette(matplotlib.cm.spring()[:NUM_OF_COLORS])
Т. е. я знаю, что в моем изображении N цветов, но я не хочу указывать их вручную, поэтому я хочу поместить N
цвета (из matplotlib.cm
или любой другой цветовой карты) в палитру, чтобы впоследствии использовать их в качестве индексированных цветов для создания светлого png
изображения.
Что я должен изменить img.putpalette(matplotlib.cm.spring()[:NUM_OF_COLORS])
, чтобы заставить ее работать?
Комментарии:
1. cm.spring должен иметь 256 цветов. Первые 5 цветов почти одинаковы. Также новое изображение содержит только один цвет; как эти пять цветов соотносятся с одним цветом изображения?
2. Я нарисую несколько полигонов, используя цвета из палитры, поэтому позже это не будет одноцветное изображение.