python读取LMDB中图像的方法
本文实例为大家分享了python读取LMDB中的图像具体代码,供大家参考,具体内容如下
图像数据写入LMDB之后最好再按照写入的逻辑反向解析写入的图像,如果图像能够被还原则证明写入方式是没有问题的。
fromPILimportImage
defread_from_lmdb(lmdb_path,img_save_to):
try:
lmdb_env=lmdb.open(lmdb_path,map_size=3221225472)
lmdb_txn=lmdb_env.begin()
lmdb_cursor=lmdb_txn.cursor()
datum=caffe.Datum()
datum_index=0
forkey,valueinlmdb_cursor:
datum.ParseFromString(value)
label=datum.label
data=datum.data
channel=datum.channels
print('Datumchannels:%d'%datum.channels)
print('Datumwidth:%d'%datum.width)
print('Datumheight:%d'%datum.height)
print('Datumdatalength:%d'%len(datum.data))
print('Datumlabel:%d'%datum.label)
size=datum.width*datum.height
pixles1=datum.data[0:size]
pixles2=datum.data[size:2*size]
pixles3=datum.data[2*size:3*size]
#Extractimagesofdifferentchannel
image1=Image.frombytes('L',(datum.width,datum.height),pixles1)
image2=Image.frombytes('L',(datum.width,datum.height),pixles2)
image3=Image.frombytes('L',(datum.width,datum.height),pixles3)
#注意三通道的顺序,如果LMDB中图像是按照BGR存储的则需要按照:image3,image2,image1的顺序合并为RGB图像。PIL中图像是按照RGB的顺序存储的
image4=Image.merge("RGB",(image3,image2,image1))
image4.save(img_save_to+str(key)+".jpg")
datum_index+=1
print"extracted"
finally:
lmdb_env.close()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。