我想从我创建的LMDB数据库加载我的图像和标签数据。我为相应的图像标签对分配了一个唯一的密钥,并将它们添加到LMDB中(例如,image-000000001,label-000000001)。保存图像时,我使用image.tostring()
将图像的numpy-array转换为字符串。现在在加载LMDB时,我发现通过传递我生成的键可以非常简单地获得标签,但是图像数据以编码方式显示。执行numpy.fromstring(lmdb_cursor.get('image-000000001'))
无效。
我看到here - the second answer, specifically, by @Ghilas BELHADJ必须使用Caffe-datum对象首先加载数据,然后使用datum.data
获取图像。但我没有这样的结构,使用“数据”来组织图像和标签。和'标签'标签。如何从python中的这样一个LMDB中以numpy图像的形式正确读回数据?
在Lua中,这可以通过以下方式实现,
local imgBin -- this is the object returned from cursor:get(image-id)
local imageByteLen = string.len(imgBin)
local imageBytes = torch.ByteTensor(imageByteLen):fill(0)
imageBytes:storage():string(imgBin)
local img = Image.decompress(imageBytes, 3, 'byte')
img = Image.rgb2y(img)
img = Image.scale(img, imgW, imgH)
我不知道如何用Python做到这一点。