擅长:python、mysql、java
<p>如果您在<code>lmdb</code>中对图像进行了编码,那么在使用@ytrewq的代码时可能会看到这个错误</p>
<pre><code>ValueError: total size of new array must be unchanged
</code></pre>
<p>请改用此函数:</p>
<pre><code>import caffe
import lmdb
import PIL.Image
from StringIO import StringIO
import numpy as np
def read_lmdb(lmdb_file):
cursor = lmdb.open(lmdb_file, readonly=True).begin().cursor()
datum = caffe.proto.caffe_pb2.Datum()
for _, value in cursor:
datum.ParseFromString(value)
s = StringIO()
s.write(datum.data)
s.seek(0)
yield np.array(PIL.Image.open(s)), datum.label
</code></pre>
<p>示例:</p>
<pre><code>lmdb_dir = '/save/jobs/20160613-125532-958f/train_db/'
for im, label in read_lmdb(lmdb_dir):
print label, im
</code></pre>