首页 > 编程 > Python > 正文

python读取LMDB中图像的方法

2020-02-15 22:07:25
字体:
来源:转载
供稿:网友

本文实例为大家分享了python读取LMDB中的图像具体代码,供大家参考,具体内容如下

图像数据写入LMDB之后最好再按照写入的逻辑反向解析写入的图像,如果图像能够被还原则证明写入方式是没有问题的。

from PIL import Imagedef read_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  for key,value in lmdb_cursor:    datum.ParseFromString(value)    label=datum.label    data=datum.data    channel=datum.channels    print ('Datum channels: %d' % datum.channels)    print ('Datum width: %d' % datum.width)    print ('Datum height: %d' % datum.height)    print ('Datum data length: %d' % len(datum.data))    print ('Datum label: %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]    #Extract images of different channel    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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林站长站。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表