python读取lmdb文件_python读取LMDB中图像的方法

这篇博客介绍了如何使用Python从LMDB数据库中读取并解析图像数据,包括使用PIL库创建图像对象,并将多通道数据合并为RGB图像进行保存。
摘要由CSDN通过智能技术生成

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

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

from PIL import Image

def 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()

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

时间: 2018-06-29

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值