У меня есть изображение цветовой палитры, такое как this one, и бинаризованное изображение в массиве numpy, например квадрат например, это:
img = np.zeros((100,100), dtype=np.bool)
img[25:75,25:75] = 1
(Реальные изображения, конечно, сложнее.)
Я бы хотел сделать следующее:
Извлеките все цвета RGB из изображения цветовой палитры.
Для каждого цвета сохраните копию
img
этого цвета с прозрачным фоном.
В моем коде (см. Ниже) можно сохранить img
как черный объект с прозрачным фоном. Я борюсь с хорошим способом извлечения цветов RGB, чтобы я мог применить их к изображению.
# Create an MxNx4 array (RGBA)
img_rgba = np.zeros((img.shape[0], img.shape[1], 4), dtype=np.bool)
# Fill R, G and B with inverted copies of the image
# Note: This creates a black object; instead of this, I need the colors from the palette.
for c in range(3):
img_rgba[:,:,c] = ~img
# For alpha just use the image again (makes background transparent)
img_rgba[:,:,3] = img
# Save image
imsave('img.png', img_rgba)