注:本篇仅用以记录本人日常学习内容
palette功能是用来对分割mask进行可视化的一个功能,常用于分割任务中。
如图是voc数据集中的未染色的图:
经过palette调色板之后就是我们常见的分割图:
代码展示的是一个将一个文件夹中所有图进行染色:
import cv2
import os
import numpy as np
from PIL import Image
def colorful(img):
'''
img:需要上色的图片
'''
img = Image.fromarray(img) # 将图像从numpy的数据格式转为PIL中的图像格式
palette = []
for i in range(256):
palette.extend((i, i, i))
palette[:3 * 21] = np.array([[0, 0, 0],
[128, 0, 0],
[0, 128, 0],
[128, 128, 0],
[0, 0, 128],
[128, 0, 128],
[0, 128, 128],
[128, 128, 128],
[64, 0, 0],
[192, 0, 0],
[64, 128, 0],
[192, 128, 0],
[64, 0, 128],
[192, 0, 128],
[64, 128, 128],
[192, 128, 128],
[0, 64, 0],
[128, 64, 0],
[0, 192, 0],
[128, 192, 0],
[0, 64, 128]
], dtype='uint8').flatten()
img.putpalette(palette)
return img
data_dir = "/"
for filename in os.listdir(data_dir):
print(filename)
img = cv2.imread(data_dir + '/' + filename, cv2.IMREAD_GRAYSCALE)
img = colorful(img)
img.save('' + filename)