本文实例为大家分享了python读取LMDB中的图像具体代码,供大家参考,具体内容如下
图像数据写入LMDB之后最好再按照写入的逻辑反向解析写入的图像,如果图像能够被还原则证明写入方式是没有问题的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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()
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/Searching_Bird/article/details/78260598