python 批量制作索引图
python批量制作索引图
最近看的语义分割GSCNN代码的数据集为cityscapes类型,代码中需要的标签图为索引图,而我的标签是3通道RGB图,所以参考了两篇博客。我是二分类,只有背景和一类标注。制作索引图记录。生成的索引图label为0,1。没上色的索引图可能看着是全黑,但是使用matlab显示图像利用工具可以看到标注的像素值不同。
参考:python制作索引图
python制作索引图
代码
# coding:utf-8
'''
制作索引图
'''
# coding:utf-8
from random import randint
from PIL import Image
import os
input_dir = 'D:/Users/caixingmin/Desktop/save/'
out_dir = 'D:/Users/caixingmin/Desktop/tupian/'
a = os.listdir(input_dir)
#def randomPalette(length, min, max):
#return [randint(min, max) for x in range(length)]
palette = [0, 0, 0,
128, 0, 0, ]#调色板颜色
# paletteID = randomPalette(768, 0, 255) #用于多分类
label_pixel_value = 178 # 标注物体的像素值(转换成灰度图像后)
#path = 'D:\\Users\\caixingmin\\Desktop\\CamVid_runway2\\train_labels\\0014.png'
for i in a[0:]:
#print(i)
img = Image.open(input_dir+i).convert('L')
for x in range(img.size[0]):
for y in range(img.size[1]):
if img.getpixel((x, y)) == label_pixel_value: # 给标注部分分配一个像素值,多分类分配多个像素值
img.putpixel((x, y), 1)
else:
img.putpixel((x, y), 0) # 背景部分
#img.show()
img.putpalette(palette) # 一分类, 【0,0,0】是背景,【128,0,0】是标注物,不上色的时候注释掉
# img.putpalette(paletteID) # 多分类 # 需要图像上有多类像素值
#img.show()
img.save(out_dir+i)
图片
背景的index为0,[R,G,B]为[0 0 0]
标注物像素值
label_pixel_value = 178 # 标注物体的像素值(转换成灰度图像后)
上述代码中的label_pixel_value是标签转换成灰度图像之后的标注物的像素值。转换成灰度图代码:
from PIL import Image
import os
input_dir = 'D:/Users/ca/Desktop/shi/'
out_dir = 'D:/Users/ca/Desktop/tupian/'
#可以只转换单张看像素值就好
a = os.listdir(input_dir)
for i in a[0:]:
img = Image.open(input_dir + i).convert('L')
img.save(out_dir+i)
转换后通过matlab查看灰度图片对应标注物的index
所以这里 label_pixel_value = 38