У меня есть изображения обнаружения опухоли головного мозга. Я хочу сделать прозрачный цвет внутри границы обнаружения в питоне.
Прозрачный цвет будет таким же, как цвет границы (122, 160, 255) с низкой непрозрачностью.
Изображение обнаружения опухоли головного мозга
Ожидаемый результат: Ожидаемое изображение
Эй, вы не добавили код, который вы пробовали, отредактируйте свою проблему и добавьте код, который вы пытались запустить, чтобы мы могли помочь вам лучше отладить проблему.
Как rgb(122 160 255) может быть прозрачным? У него нет альфа-канала, то есть это не RGBA.
Да, я хочу преобразовать этот цвет в альфа-канал
Это не имеет для меня особого смысла, извините. Можете ли вы нажать редактировать и добавить изображение ожидаемого результата, пожалуйста? Даже макетная версия хороша.
Как хранится ваша граница? У вас есть список граничных пикселей? Или черное изображение с белыми граничными пикселями? Или что?
У меня есть черное изображение с граничными пикселями белого цвета.
Хорошо, это изображение относится к вашему вопросу, тогда, пожалуйста.
Вы вообще пробовали мой ответ? Как вы попали на?
Вот как это сделать:
#!/usr/bin/env python3
from PIL import Image, ImageDraw
# Open boundary image and ensure greyscale
im = Image.open('boundary.png').convert('L')
# Get the bounding box so we can guesstimate its centre for flood-filling
bbox = im.getbbox()
cx = int((bbox[0]+bbox[1])/2)
cy = int((bbox[2]+bbox[3])/2)
print(f'DEBUG: cx = {cx}, cy = {cy}')
# Threshold the boundary image to pure black and white
thresh = im.point(lambda p: 255 if p>128 else 0)
# Flood-fill with 64 starting from the centre and proceeding to a pure white boundary border
ImageDraw.floodfill(thresh, (cx,cy), 64, border=255)
thresh.save('DEBUG-flood-filled.png')
# Open the original image
scan = Image.open('a0pMX.png')
# Create a peachy overlay, then push in the alpha layer
overlay = Image.new('RGB', scan.size, 'rgb(255,160,122)')
overlay.putalpha(thresh)
overlay.save('DEBUG-overlay.png')
# Paste the overlay onto the scan
scan.paste(overlay, mask=overlay)
scan.save('result.png')
Вот промежуточные изображения:
DEBUG-flood-filled.png
DEBUG-overlay.png
результат.png
Отвечает ли это на ваш вопрос? Python PIL 0.5 непрозрачность, прозрачность, альфа