分割任务之后总是想检查下img和mask是否匹配,我们需要把两张图放在一起看,下面就是操作。
img = Image.open(file)
masked_image = np.array(img).copy()
# 把img和mask合并
colors = random_colors(10)
color = colors[6]
masked_image = apply_mask(masked_image, labels_arr, color)
masked_image_save = Image.fromarray(masked_image.astype(np.uint8))
masked_image_save.save('G:/xiao/dataset_molcreate/create_ann/mask/' + str(i) + '.png')
需要用到的函数在下面
def random_colors(N, bright=True):
"""
Generate random colors.
To get visually distinct colors, generate them in HSV space then
convert to RGB.
"""
brightness = 1.0 if bright else 0.7
hsv = [(i / N, 1, brightness) for i in range(N)]
colors = list(map(lambda c: colorsys.hsv_to_rgb(*c), hsv))
random.shuffle(colors)
return colors
def apply_mask(image, mask, color, alpha=0.5):
"""Apply the given mask to the image.
"""
for c in range(3):
image[:, :, c] = np.where(mask == 1, image[:, :, c] * (1 - alpha) + alpha * color[c] * 255, image[:, :, c])
return image
用到的库
import colorsys
import random
from PIL import Image
结果展示