bsds500数据集在轮廓和分割使用很频繁,但是数据本身是保存成.mat的,不是我们常用的图片格式,.mat实际上是一堆json格式的文件,是MATLAB保存的,为了方便我们常规使用,我打算将其转成.jpg
数据集下载:
链接:
提取码:3faz
打印.mat文件
x=io.loadmat('D:\\BSR_bsds500\\BSR\BSDS500\\data\\groundTruth\\train\\12003.mat')
print(x.keys())
我们可以看到:
dict_keys(['__globals__', 'groundTruth', '__header__', '__version__'])
说明我们这个.mat文件文件里面是一堆这样的key
可以把读取的内容打印出来:
截取其中一部分,我们可以看到实际上这里存了两种数据,一种是轮廓一种是分割
dtype=[('Segmentation', 'O'), ('Boundaries', 'O')]
x['groundTruth'][0][0][0][0][1]为轮廓
x['groundTruth'][0][0][0][0][0]为分割图
现在可以直接上代码进行转换:
import numpy as np
#import matplotlib.pyplot as plt
from scipy import io
import scipy
import os
PATH = os.path.join(os.path.dirname('D:\\BSR_bsds500\\BSR\BSDS500\\data\\groundTruth\\'), 'D:\\BSR_bsds500\\BSR\BSDS500\\data\\groundTruth\\')
"""处理train"""
train_list =os.listdir(PATH+'train')
print(len(train_list))
for index in train_list:
name=index.split('.')[0]
print(name)
train=io.loadmat(PATH+'\\train\\'+index)
#print(train)
a=np.array(1024)
a=train['groundTruth'][0][0][0][0][1]
print(a)
a=a*255
print(PATH+'trans\\train\\'+str(name))
scipy.misc.imsave(PATH+'trans\\train\\'+str(name)+'.jpg', a)#保存图片
"""处理test"""
test_list =os.listdir(PATH+'test')
print(len(test_list))
for index in test_list:
name=index.split('.')[0]
print(name)
test=io.loadmat(PATH+'\\test\\'+index)
#print(train)
a=np.array(1024)
a=test['groundTruth'][0][0][0][0][1]
print(a)
a=a*255
print(PATH+'trans\\test\\'+str(name))
scipy.misc.imsave(PATH+'trans\\test\\'+str(name)+'.jpg', a)#保存图片
"""处理val"""
val_list =os.listdir(PATH+'val')
print(len(val_list))
for index in val_list:
name=index.split('.')[0]
print(name)
val=io.loadmat(PATH+'\\val\\'+index)
#print(train)
a=np.array(1024)
a=val['groundTruth'][0][0][0][0][1]
print(a)
a=a*255
print(PATH+'trans\\val\\'+str(name))
scipy.misc.imsave(PATH+'trans\\val\\'+str(name)+'.jpg', a)#保存图片
转换结果:
现在我们就可以得到转换的数据集了,如果不想转换可以直接下载,我这里已经转成功:
链接:
提取码:4gab