【caffe】读取lmdb文件中的内容

参考: https://www.jb51.net/article/142988.htm
https://blog.csdn.net/jyl1999xxxx/article/details/53942824

# read.py
from PIL import Image
from caffe.proto import caffe_pb2
import lmdb
import numpy as np

path='/home/...../caffe/examples/cifar10/cifar10_test_lmdb'
def read_from_lmdb(lmdb_path, img_save_to):
    lmdb_env=lmdb.open(lmdb_path)
    lmdb_txn=lmdb_env.begin()
    lmdb_cursor=lmdb_txn.cursor()
    datum=caffe_pb2.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)

        image4=Image.merge("RGB",(image3,image2,image1))
        image4.save(img_save_to+str(key)+".jpg")
        datum_index+=1
        print "extracted"

    lmdb_env.close()

read_from_lmdb(path, 'pic')

执行文件

python read.py

则能看到打印输出和获得的图片文件

.......
09998,1
(3, 32, 32)
09999,7
(3, 32, 32)
Datum channels: 3
Datum width: 32
Datum height: 32
Datum data length: 3072
Datum label: 3
extracted
......
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值