Я склонен использовать OpenCV
много, который использует numpy
в качестве бэкэнда, поэтому изображения - это просто матрицы.
Чтобы наложить двоичное изображение на фоновое изображение, вы в основном делаете:
overlaycolour = [255,0,0] # for red
for each channel c in 1:3
overlayimage[:,:,c] = (1-alpha)*backgroundimage[:,:,c] +
alpha*binary[:,:,c]*overlaycolour[c]
Здесь alpha
- прозрачность наложения (если alpha
равно 1, наложение просто вставляется на изображение; если альфа равно 0, то наложение невидимо, а если между ними альфа,оверлей немного прозрачный).
Кроме того, либо: - двоичное изображение (т. е. изображение, которое должно быть наложено) нормализовано до 1 с и 0 с, а цвет наложения от 0 до 255, ИЛИ - двоичное изображение имеет значение 255 с и 0 с, а цвет наложения - от 0 до 1.
Наконец, если фоновое изображение серого цвета, превратите его в цветное изображение, просто реплицируя этот отдельный канал для каждого изкрасный, зеленый, синий каналы.
Если вы хотите отобразить фоновое изображение на определенной цветовой карте, сначала вам нужно будет сделать это и передать его в функцию наложения.
Iя не уверен, как этот вид кодасделано в PIL, но это не должно быть слишком сложно.