从mxnet的rec文件中恢复jpg格式
网上清一色“互相参考”的回答……:
这里迷之501195,然后搜了几个答案居然都写的501195.......
这里给出另一份答案:
参考:
cvtower/seesawfacenet_pytorch: offical seesawfacenet pytorch implement, https://arxiv.org/abs/1908.09124 (github.com)
def load_mx_rec(rec_path):
# save_path: 转为图片后存储的位置
# rec_path: rec文件的路径
save_path = './ms1m_ibug'
save_path = os.path.join(save_path, 'imgs')
if not os.path.exists(save_path):
os.makedirs(save_path)
imgrec = mx.recordio.MXIndexedRecordIO(os.path.join(rec_path,'train.idx'), os.path.join(rec_path,'train.rec'), 'r')
img_info = imgrec.read_idx(0)
header,_ = mx.recordio.unpack(img_info)
max_idx = int(header.label[0])
print('max_idx:', max_idx) # 这里的max_idx指的是图片的个数
for idx in tqdm(range(1,max_idx)):
img_info = imgrec.read_idx(idx)
header, img = mx.recordio.unpack(img_info)
label = int(header.label)
img = mx.image.imdecode(img).asnumpy() # mxnet格式文件转为numpy
img = Image.fromarray(img) # numpy转为Image方便保存
label_path = os.path.join(save_path,str(label))
if not os.path.exists(label_path):
os.makedirs(label_path)
img.save(os.path.join(label_path,'{}.jpg'.format(idx)), quality=95)